`

判断重复,只保留一条记录,但是要显示全部字段

 
阅读更多

判断重复,只保留一条记录,但是要显示全部字段

<script type="text/javascript"></script>

 

专题地址:

http://access911.net/?kbid;79FABE1E14DC

 

简述:

判断重复,只保留一条记录,但是要显示全部字段《查询》

 

阅读前需掌握:

熟练掌握 JET SQL 查询

 

难度等级:

<script type="text/javascript"></script>
80  














 

 

问题:

  根据其中几个字段判断重复,只保留一条记录,但是要显示全部字段,怎么查询,谢谢!!

 

比如
字段1 字段2 字段3 字段4
a b c 1
a b c 1

a b d 2
a b d 3

b b d 2

想得到的结果为
a b c 1
a b d 2(或者3)
b b d 2
说明,根据字段1,2,3组合不重复,字段4 不考虑,得到了3个记录
但是也要显示字段4。

 

 

 

方法一:

 
可以用临时表的方法来解决:
CurrentProject.Connection.Execute "drop table temptable"
CurrentProject.Connection.Execute "select * into temptable from 表2 where 1=2"
CurrentProject.Connection.Execute "insert into temptable(字段1,字段2,字段3) SELECT DISTINCT 表2.字段1, 表2.字段2, 表2.字段3 FROM 表2;"
CurrentProject.Connection.Execute "UPDATE temptable INNER JOIN 表2 ON (表2.字段1 = temptable.字段1) AND (表2.字段2 = temptable.字段2) AND (表2.字段3 = temptable.字段3) SET temptable.字段4 = [表2].[字段4];"

 

 

 

方法二:

 
可以直接使用一个SELECT查询筛选出需要的数据:
可以假定第四字段都选值最小的
SELECT [1],[2], [3], Min([4]) AS Min4
FROM 表1
GROUP BY 表1.[1], 表1.[2], 表1.[3];

 

 

 

问题:

  表2

 

id NAME r1 r2
1 1 w ee
1 1 1 1232
1 2 123 123
1 2 12 434
1 2 123 123
2 1 123 123

ID 为数值,NAME 为字符。每条记录没有唯一标识。
要求取得 ID 和 NAME 合并后不重复的记录,如有重复保留其中一条即可,但要显示所有记录。

 

 

回答:

 
SELECT a.*, (select top 1 r1 from 表2 as a1 where a1.id=a.id and a1.name=a.name) AS r1, (select top 1 r2 from 表2 as a2 where a2.id=a.id and a2.name=a.name) AS r2
FROM [SELECT DISTINCT 表2.id, 表2.NAME
FROM 表2]. AS a;

 

 

SELECT a.*, dlookup("r1","表2","id=" & a.id & " and name='"& a.name & "'") AS r1, dlookup("r2","表2","id=" & a.id & " and name='"& a.name & "'") AS r2
FROM [SELECT DISTINCT 表2.id, 表2.NAME
FROM 表2]. AS a;

 

注意,上述代码中由于没有唯一标识列,因此显示的 R1 R2 的先后次序无从确定,一般是按输入的先后顺序,但是微软没有官方资料说明到底按哪个顺序,请网友注意。

请注意,上述表2为没有唯一标识字段,如果现在再建立一个自动编号字段“主键”则可以用以下代码

 

SELECT a.ID, a.name, b.r1, b.r2, b.主键
FROM (SELECT 表2.id, 表2.NAME, Min(表2.主键) AS 主键
FROM 表2
GROUP BY 表2.id, 表2.NAME) AS a inner JOIN 表2 AS b ON a.主键=b.主键;

 

 

 

 

本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

分享到:
评论

相关推荐

    解决Oracle删除重复数据只留一条的方法详解

    查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) &gt; 1)2、删除表中多余的重复记录,...

    软件开发界面规范用例

    4) 如界面存在复选按钮,勾选多条记录进行修改时,需给予只能对一条记录进行修改,默认为第一条的提示信息。 5) 修改时加载的内容都为该记录的实际内容,而不再为默认值。 6) 修改完成后必须回到原记录所在位置,...

    一条sql语句完成MySQL去重留一

    数据库中存在重复记录,删除保留其中一条(是否重复判断基准为多个字段) 解决方案 碰到这个需求的时候,心里大概是有思路的。最快想到的是可以通过一条sql语句来解决,无奈自己对于复杂sql语句的道行太浅,所以想找...

    达梦数据库_SQL语言手册

    修改操作的对象也可以是元组的集合,相对于面向记录的数据库语言一次只能操作一条记录来 语言的使用简化了用户的处理,提高了应用程序的运行效率 语言简洁,方便易学 语言功能强大,格式规范,表达简洁,接近英语的语法...

    经典全面的SQL语句大全

     假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的...

    Excel新增工具集

    一张员工工资表 (学生成绩表)是由同一工作表中的同一单行或多行的表头下共存的若干条记录组成,要把单人的工资 (成绩)发给本人,用本软件可轻松地将每条记录分离,并在每一条记录的上方添加一个表头,以明确各项目的...

    Oracle练习笔试大全

    //再要求一共有多少条记录的时候,还可以在后面跟上限定条件 53、select count(distinct deptno) from emp; //统计部门编号前提是去掉重复的值 ////////////////////////聚组函数group by() ////////////////////...

    Excel VBA实用技巧大全 附书源码

    03022判断工作表被保护时是否启用分级显示符号 03023判断工作表被保护时是否启用数据透视表控件和操作 03024判断工作表被保护时是否可以选定单元格 03025重命名工作表 03026重命名新建的工作表 03027改变工作表标签...

    mysql数据库的基本操作语法

    foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据 check:检查,指定一个表达式,用于检验指定数据 MySQL不支持check约束,但可以使用check约束,而没有任何效果; 根据约束数据列限制,约束...

    JSP实用技巧集合,jsp编程的一些小技巧总结

    12. 用什么sql语句将数据库中的一条记录,复制为两条? 13. 有兩個按鈕A,B,其中A按下去,A就不可以再按,另外B按下去,A可以再按..請問如何用javascript控制.? 14. jsp中的数据库的连接方式 15. 在jsp中,怎么实现按回车就...

    ASP200问.EXE

    75.如何只读取数据库的前几条记录且如何实现排行榜 76.如何实现在多个表中查询数据 77.如何用ASP实现通用条件查询模块 78.如何在ASP整合SQL语句 79.如何实现不刷新页面筛选数据库中的数据 80.如何实现公共的数据分页...

    精髓Oralcle讲课笔记

    --再要求一共有多少条记录的时候,还可以在后面跟上限定条件 53、select count(distinct deptno) from emp; --统计部门编号前提是去掉重复的值 ------------------------聚组函数group by() ------------------...

    jsp编程技巧集锦

    用什么sql语句将数据库中的一条记录,复制为两条? 13. 有兩個按鈕A,B,其中A按下去,A就不可以再按,另外B按下去,A可以再按 請問如何用javascript控制.? 14. jsp中的数据库的连接方式 15. 在jsp中,怎么...

    ExtAspNet_v2.3.2_dll

    -这将会影响所有的aspx页面,一定要将工具条(Toolbars)和Items区分开来。 -祝你生日快乐 - 小师妹妹。 +2009-08-29 v2.0.8 -ExtAspNet支持多语言(en,zh_CN,zh_TW),可以在Web.config中修改。 -将所有的...

    《你必须知道的495个C语言问题》

    1.30 如何判断哪些标识符可以使用,哪些被保留了? 15 初始化 18 1.31 对于没有显式初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零? 18  1.32 下面的...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -这将会影响所有的aspx页面,一定要将工具条(Toolbars)和Items区分开来。 -祝你生日快乐 - 小师妹妹。 +2009-08-29 v2.0.8 -ExtAspNet支持多语言(en,zh_CN,zh_TW),可以在Web.config中修改。 -将所有的...

    你必须知道的495个C语言问题

    1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 *1.26 main的正确定义是什么?voidmain正确吗? 1.27 我的编译器总在报函数原型不匹配的错误,可我觉得没什么问题。这是为什么? 1.28 文件...

    C#编程经验技巧宝典

    81 &lt;br&gt;0120 如何根据标点符号分行 81 &lt;br&gt;0121 如何将字符串颠倒输出 82 &lt;br&gt;0122 如何设置小数的保留位数 82 &lt;br&gt;0123 如何对字符串进行组合或分解 82 &lt;br&gt;0124 判断字符串中某一字符是否...

Global site tag (gtag.js) - Google Analytics