我正在尝试创建一个查询,删除 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);
请提出任何建议,谢谢。
答案 0 :(得分:0)
这些命令应该在标准SQL服务器中运行。您必须对其进行测试,以确定Access是否对其做了任何有趣的事情。
WITH CTE AS(
SELECT field1, field2,
RN = ROW_NUMBER()OVER(PARTITION BY field1 ORDER BY field1)
FROM table1
)
DELETE FROM CTE WHERE RN > 1
答案 1 :(得分:0)
试试这个:
DELETE *
FROM Table
WHERE [UniqueField] NOT IN (SELECT MIN([UniqueField]) FROM [table] As Tmp
GROUP BY [field1],[field2],[field3],[field4],[field5] HAVING Count(*)>1);
它也适用于MS-ACCESS。