1
我有以下形式的SQL表: -删除重复行,但保留唯一的副本
Name Age
Kim 5
Tom 8
Jim 12
Kim 5
David 21
Jim 12
在上述情况下,金正日和吉姆是重复的,它们存在的两倍。
如果我有一个上表的大表,有大约60000个条目,我该如何编写一个sql查询来删除重复但仍保留唯一的?
我有以下形式的SQL表: -删除重复行,但保留唯一的副本
Name Age
Kim 5
Tom 8
Jim 12
Kim 5
David 21
Jim 12
在上述情况下,金正日和吉姆是重复的,它们存在的两倍。
如果我有一个上表的大表,有大约60000个条目,我该如何编写一个sql查询来删除重复但仍保留唯一的?
在Common Table Expression
和Window 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
哎JW,是什么的DUP按照您的查询?只是一个小混乱 – user1915108 2013-03-15 05:51:51
这是[** CTE **](http://msdn.microsoft.com/en-us/library/ms175972.aspx) – 2013-03-15 05:53:08
嘿JW的名字,最后一个疑问..假设我想要删除行号5,我如何设计d qeury?例如,从rownumber = 5的表名中删除; – user1915108 2013-03-15 06:18:15