我想创建一个只有在两个字段具有匹配数据时才能查找和删除重复项的查询。并不意味着这两个字段完全匹配,如字段A和字段B都具有"未处理的"但从某种意义上说,表中的两个记录有" 1234"在字段A AND"未处理"在字段B中,应该删除整行记录,只有最旧的记录(明显更接近列标题的记录)将留在表中。
希望这是有道理的。谢谢!
答案 0 :(得分:0)
与往常一样,在执行任何此类删除之前,请务必备份您的访问数据库。
注意,您可以通过切换到" SQL"来创建这些查询。查询查询。 (而不是默认的'设计'视图)。
步骤1 - 识别重复数据。按查询创建一个make表组,按要检查重复项的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创建删除查询,并通过" Max ID"连接回原始表。字段,这将是最新的重复记录。
DELETE DISTINCTROW Table1.*
FROM TEMP_DeleteThese INNER JOIN Table1 ON TEMP_DeleteThese.MaxOfID = Table1.ID;
根据需要多次运行make表和删除查询以删除所有重复项。
我在这里假设你有一个主键(在这种情况下是" Table1.ID"),从低位开始自动编号,并计数到更高。