我知道這個問題被問了很多,但每次我嘗試在我自己的數據庫中的答案之一,重複的行被刪除。從這裏可以在這裏刪除第2行和第3行的好查詢是什麼?在SQL Server 2008中刪除重複行
下面是圖片的鏈接(不具備的圖像足夠的聲譽分):DataTable image
謝謝!
我知道這個問題被問了很多,但每次我嘗試在我自己的數據庫中的答案之一,重複的行被刪除。從這裏可以在這裏刪除第2行和第3行的好查詢是什麼?在SQL Server 2008中刪除重複行
下面是圖片的鏈接(不具備的圖像足夠的聲譽分):DataTable image
謝謝!
你可以使用一個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
...
)
)我不知道在哪裏放表名等我在這裏執行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
@ thijs1095:看起來細。什麼意思_「它沒有工作」_? –
我收到以下錯誤:消息208,級別16,狀態1,行2 無效的對象名稱'dbo.tsk_Tasks'...並刪除重複的行不正確 – thijs1095
_What_是你已經嘗試的途徑問題,您可以顯示至少一個? ( –