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