2013-03-15 195 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

相關問題