删除重复行但保留唯一副本

时间:2013-03-15 05:44:06

标签: sql sql-server sql-server-2008 sql-delete

我有一个表格的SQL表: -

Name     Age
Kim       5
Tom       8
Jim       12
Kim       5
David     21
Jim       12

在上面的场景中,Kim和Jim是重复的,他们存在两次。

如果我有一个上面表格的大表,有大约60000个条目,我如何编写一个sql查询只删除重复项但仍然保留唯一的?

1 个答案:

答案 0 :(得分:3)

Common Table ExpressionWindow Function的帮助下,您可以轻松删除重复记录。

WITH dups
AS
(
    SELECT  Name, Age,
            ROW_NUMBER() OVER (PARTITION BY Name, Age ORDER BY Age DESC) rn
    FROM    TableName
)
DELETE FROM dups
WHERE   rn > 1