我正在使用 SQL Server 2005。
我有一张这样的 table ——
ID Name
1 a
1 a
1 a
2 b
2 b
3 c
4 d
4 d
在此,我想删除所有重复条目并仅保留一个实例作为-
ID Name
1 a
2 b
3 c
4 d
我可以通过向该表添加另一个标识列并在其中包含唯一编号然后删除重复记录来轻松完成此操作。但是我想知道是否可以删除重复记录不添加额外的列 到这张 table 。
此外,如果这可以仅使用一个查询语句来完成。即 不使用存储过程或临时表。
最佳答案
使用 ROW_NUMBER在 CTE允许您在保留唯一行的同时删除重复值。
WITH q AS (
SELECT RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID )
, ID
, Name
FROM ATable
)
DELETE FROM q WHERE RN > 1
关于sql - 仅使用一个查询删除重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5324563/