`

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

 
阅读更多

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

<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查询重复数据并删除,只保留一条记录.docx

    Oracle 查询重复数据并删除,只保留一条记录 Oracle 是一种关系型数据库管理系统,广泛应用于企业级数据库管理。然而,在实际应用中,数据重复问题经常会出现,例如在资源目录在线编目的资源项子表中存在多条重发...

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

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

    解析mysql不重复字段值求和

    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是...

    一条SQL清除(单字段、多字段)重复数据的办法.txt

    通过这种方式,我们可以确保基于这些字段的所有组合值,只保留一组记录,同时删除其他重复的记录。 ### 注意事项 - 在执行删除操作前,强烈建议先备份数据库,以防万一。 - 使用`ROWID`或类似功能来选择保留哪一行...

    SQL语句实现删除重复记录并只保留一条

    本文将详细介绍如何使用SQL语句删除重复记录并仅保留一条。 首先,我们来看一种常见的实现方式,例如在`WeiBoTopics`表中删除重复记录并保留Id最大的一条。以下是一个SQL查询示例: ```sql DELETE FROM ...

    sqlserver中重复数据值只取一条的sql语句

    当数据库表中的某些列有重复的值时,我们可能需要仅选取其中的一条记录,例如,选择每组重复数据的第一条或者最后一条。题目中提到的SQL语句就是解决这类问题的一个示例。 首先,我们创建一个名为`TestData`的数据...

    Delphi自动删除数据库中重复记录..rar

    // 如果主键值相同,表示重复,删除前一条记录 if CurrentRecord = LastRecord then ADataset.Prior.Delete; end; // 移动到下一条记录 ADataset.Next; end; end; ``` 这个示例中的 `RemoveDuplicates` ...

    sql 查询重复数据

    如果只想保留一条重复记录,可以使用以下 SQL 语句: ```sql DELETE HZT WHERE ID Not In (SELECT Max(ID) FROM HZT GROUP BY Title); ``` 查找表中多余的重复记录 如果想查找表中多余的重复记录,可以使用...

    最高效的删除重复记录方法

    要删除表中的重复记录,首先需要确定哪些字段或组合能够唯一标识一条记录。例如,在员工信息表中,`EMP_NO` 字段通常可以作为唯一的标识符。接下来,可以通过比较这些唯一标识符来判断哪些记录是重复的,并选择适当...

    oracle中如何删除重复的数据

    若想保留重复数据中最新的一条(即ROWID最大的一条),可使用如下查询: ```sql DELETE FROM 表名 a WHERE a.rowid != ( SELECT MAX(b.rowid) FROM 表名 b WHERE a.字段1 = b.字段1 AND a.字段2 = b.字段2 );...

    如何删除在Excel2021的数据列表重复记录.docx

    例如,如果有两行数据在Name和Date字段上完全相同,那么Excel会删除其中的一条,只保留一条。 在确认选择无误后,点击“确定”,Excel将开始执行删除操作。稍等片刻,你会看到操作结果,即已删除的重复记录数量,...

    SQL语句实现删除ACCESS重复记录的两种方法

    这时,我们通常希望保留这些重复字段中的一条记录,通常是第一条出现的记录。处理这种问题的一种方法是引入一个自增ID作为排序依据,如下所示: 1. 首先创建一个临时表,并为每个Name和Address组合分配一个唯一的ID...

    清除重复数据.rar

    - **手动审查**:对于重要或复杂的数据,可能需要人工介入,结合业务知识判断保留哪条记录。 5. **数据验证**:清除重复数据后,应进行数据验证,确保没有误删或漏删,同时检查去重操作是否影响了数据分析结果的...

    删重复记录

    - **索引优化**:如果表中存在大量重复数据,考虑在用于判断重复的列上建立索引,可以显著提高查询和删除操作的速度。 - **数据一致性检查**:删除操作完成后,建议对数据进行一致性检查,确保没有留下孤立的数据或...

    删除表中重复数据sql语句.docx

    但如果需要保留一条记录,可以创建一个临时表,再将临时表的数据回写到原表: ```sql SELECT DISTINCT * INTO #Tmp FROM tableName DROP TABLE tableName SELECT * INTO tableName FROM #Tmp DROP TABLE #Tmp ...

    repNum.rar_数据重复_重复数

    4. **基于主键**:如果数据集包含主键,即能唯一标识一条记录的字段,那么可以直接比较主键来确定重复。主键相同的记录视为重复。 5. **使用SQL的DISTINCT关键字**:在关系数据库中,可以使用SQL查询去除重复,例如...

    ASP横向数据重复的插件

    2. **重复检测**:通过算法检查每一条记录的关键字段,确定是否存在重复。 3. **去重策略**:根据设定的规则,决定如何处理重复数据。可能是保留第一条出现的数据,或者是合并重复数据的某些字段。 4. **数据整理**...

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

    本文主要介绍如何使用SQL语句来实现“去重留一”,即删除重复记录并仅保留一条,且判断重复的标准基于多个字段。以下是对这个问题的详细解答。 首先,面对存在重复记录的需求,通常的思路是通过编程语言遍历数据并...

Global site tag (gtag.js) - Google Analytics