我想创建一个查询,只有在两个字段具有匹配的数据时才能查找和删除重复项。不意味着这两个字段完全匹配,就像字段A和字段B都具有“未处理”,但从某种意义上说,表中的两个记录在字段A中具有“1234”,在字段B中具有“未处理”,那么整行记录应该被删除,并且只有最旧的记录(清楚地接近列标题的记录)才会留在表格中。仅在两个字段具有匹配数据时才查找并删除重复项Ms Access
希望这是有道理的。谢谢!
我想创建一个查询,只有在两个字段具有匹配的数据时才能查找和删除重复项。不意味着这两个字段完全匹配,就像字段A和字段B都具有“未处理”,但从某种意义上说,表中的两个记录在字段A中具有“1234”,在字段B中具有“未处理”,那么整行记录应该被删除,并且只有最旧的记录(清楚地接近列标题的记录)才会留在表格中。仅在两个字段具有匹配数据时才查找并删除重复项Ms Access
希望这是有道理的。谢谢!
与往常一样,在进行任何删除操作之前,一定要备份您的访问数据库。
注意,您可以通过切换到查询上的“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”),它是从低数字开始的自动编号,并计数到更高。
我很感谢这个伟大的解释,但我不知道如何创建任何你刚才所说的。如果它是用SQL编写的,我会知道在哪里放置我的表和字段名称,但实际上是从头开始构建它,我做不到。我对Access相当陌生,只知道如何构建简单的查询:( – Lilly 2015-03-31 18:28:56
这是一次性练习来移除重复项,还是需要有可重复的过程?如果使用更具体的字段名称编辑问题,我可以尝试构建SQL。 – 2015-03-31 18:49:08
这肯定是可重复的。字段“caseid”和字段“状态”是指两个字段,谢谢。 – Lilly 2015-03-31 19:37:13