2015-06-16 144 views
2

我试图做一个查询,将从Access 2010表中删除所有重复的行。而我的问题是,该查询正在删除所有重复的记录(甚至原来的)。访问使用查询删除重复

假设我有1条记录是原创的,2条记录是重复的。相反,删除2次重复的,它会删除所有3.

这里是我做过什么:

DELETE * 
    FROM Table 
    WHERE [field1] IN (SELECT [field1] FROM [table] As Tmp 
    GROUP BY [field1],[field2],[field3],[field4],[field5] HAVING Count(*)>1); 

和主键字段(ID)

回答

2

访问绝不会允许你DELETEGROUP BY查询。所以你需要一个根本不同的方法。

创建一个查询仅返回一行每个重复字段组:

SELECT [field1], [field2], [field3], [field4], [field5], Min([ID]) AS keep_id 
FROM [table] 
GROUP BY [field1], [field2], [field3], [field4], [field5]; 

保存,作为qryKeepIDs,然后用它DELETE查询:

DELETE FROM [Table] 
WHERE [Table].ID Not In (SELECT keep_id FROM qryKeepIDs);