2014-03-27 160 views
0

我知道這個問題被問了很多,但每次我嘗試在我自己的數據庫中的答案之一,重複的行被刪除。從這裏可以在這裏刪除第2行和第3行的好查詢是什麼?在SQL Server 2008中刪除重複行

下面是圖片的鏈接(不具備的圖像足夠的聲譽分):DataTable image

謝謝!

+0

_What_是你已經嘗試的途徑問題,您可以顯示至少一個? ( –

回答

0

你可以使用一個CTE與ROW_NUMBER

WITH CTE AS(
    SELECT t.*, 
      rn = ROW_NUMBER() OVER (PARTITION BY Col1, Col2, Col3, Col4, Col5, ... 
            ORDER BY Col1) 
    FROM dbo.TableName t 
) 
DELETE FROM CTE WHERE RN > 1 

這將刪除除一人外所有重複行。

如果要刪除所有你能使用EXISTS

DELETE FROM CTE c1 
WHERE EXISTS(
    SELECT 1 FROM CTE c2 
    WEHRE c2.rn > 1 
    AND c1.Col1=c2.Col1 
    AND c1.Col2=c2.Col2 
    AND c1.Col3=c2.Col3 
    AND c1.Col4=c2.Col4 
    AND c1.Col5=c2.Col5 
    ... 
) 
+0

)我不知道在哪裏放表名等我在這裏執行qeury,但它沒有工作與CTE AS( SELECT t。*, RN = ROW_NUMBER()OVER(分區由tsk_TaskName,tsk_Task,tsk_AddDate,tsk_DueDate ,tsk_Destination,tsk_History,tsk_Finished,tsk_FinishedHistory ORDER BY tsk_TaskName) FROM dbo.tsk_Tasks噸 ) DELETE FROM CTE WHERE RN> 1 – thijs1095

+0

@ thijs1095:看起來細。什麼意思_「它沒有工作」_? –

+0

我收到以下錯誤:消息208,級別16,狀態1,行2 無效的對象名稱'dbo.tsk_Tasks'...並刪除重複的行不正確 – thijs1095