2015-03-30 47 views
0

我想创建一个查询,只有在两个字段具有匹配的数据时才能查找和删除重复项。不意味着这两个字段完全匹配,就像字段A和字段B都具有“未处理”,但从某种意义上说,表中的两个记录在字段A中具有“1234”,在字段B中具有“未处理”,那么整行记录应该被删除,并且只有最旧的记录(清楚地接近列标题的记录)才会留在表格中。仅在两个字段具有匹配数据时才查找并删除重复项Ms Access

希望这是有道理的。谢谢!

回答

0

与往常一样,在进行任何删除操作之前,一定要备份您的访问数据库。

注意,您可以通过切换到查询上的“SQL”视图来创建这些查询。 (而不是默认的“设计”视图)。

步骤1 - 识别重复的数据。按查询创建一个生成表组,然后按照您想要检查重复项的2个字段进行分组,然后进行计数和最大值。筛选以仅显示计数> 1的记录。将其另存为“Query1”。这将创建一个名为TEMP_DeleteThese的临时表。

SELECT Table1.CaseID, Table1.Status, 
     Count(Table1.ID) AS CountOfID, 
     Max(Table1.ID) AS MaxOfID 
INTO TEMP_DeleteThese 
FROM Table1 
GROUP BY Table1.CaseID, Table1.Status 
HAVING (((Count(Table1.ID))>1)); 

2步 - 创建基于TEMP_DeleteThese删除查询和联接回到原来的表,通过“最大ID”字段,这将是最新的重复记录。

DELETE DISTINCTROW Table1.* 
FROM TEMP_DeleteThese INNER JOIN Table1 ON TEMP_DeleteThese.MaxOfID = Table1.ID; 

运行make表和删除查询多次根据需要删除所有重复项。

我在这里做了一个假设,你有一个主键(在这种情况下是“Table1.ID”),它是从低数字开始的自动编号,并计数到更高。

+0

我很感谢这个伟大的解释,但我不知道如何创建任何你刚才所说的。如果它是用SQL编写的,我会知道在哪里放置我的表和字段名称,但实际上是从头开始构建它,我做不到。我对Access相当陌生,只知道如何构建简单的查询:( – Lilly 2015-03-31 18:28:56

+0

这是一次性练习来移除重复项,还是需要有可重复的过程?如果使用更具体的字段名称编辑问题,我可以尝试构建SQL。 – 2015-03-31 18:49:08

+0

这肯定是可重复的。字段“caseid”和字段“状态”是指两个字段,谢谢。 – Lilly 2015-03-31 19:37:13

相关问题