2013-03-15 191 views
1

我有以下形式的SQL表: -删除重复行,但保留唯一的副本

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

在上述情况下,金正日和吉姆是重复的,它们存在的两倍。

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

回答

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 
+0

哎JW,是什么的DUP按照您的查询?只是一个小混乱 – user1915108 2013-03-15 05:51:51

+0

这是[** CTE **](http://msdn.microsoft.com/en-us/library/ms175972.aspx) – 2013-03-15 05:53:08

+0

嘿JW的名字,最后一个疑问..假设我想要删除行号5,我如何设计d qeury?例如,从rownumber = 5的表名中删除; – user1915108 2013-03-15 06:18:15

相关问题