我需要從表中刪除重複刪除重複:使用分區由SQL Server
;WITH cte as(
SELECT ROW_NUMBER() OVER (PARTITION BY [specimen id]
ORDER BY (SELECT 0)) RN
FROM quicklabdump)
delete from cte where RN>1
列quicklabdumpID
是主鍵。
我想知道如何只保留其中也有[specimen id]
我需要從表中刪除重複刪除重複:使用分區由SQL Server
;WITH cte as(
SELECT ROW_NUMBER() OVER (PARTITION BY [specimen id]
ORDER BY (SELECT 0)) RN
FROM quicklabdump)
delete from cte where RN>1
列quicklabdumpID
是主鍵。
我想知道如何只保留其中也有[specimen id]
通過向quicklabdumpid DESC
更改爲了最大quicklabdumpID
。
WITH cte as(
SELECT ROW_NUMBER() OVER (PARTITION BY [specimen id]
ORDER BY quicklabdumpid DESC) RN
FROM quicklabdump)
delete from cte where RN>1
無需多次出現的分區
delete q
from quicklabdump q
where exists
(
select *
from quicklabdump q2
where q2.[specimen id] = q.[specimen id] and
q2.quicklabdumpID > q.quicklabdumpID
)
只是好奇,你是從'quicklabdump'這裏刪除,@I__是從'cte'刪除嗎? – cctan 2012-02-03 02:18:08
@cctan - cte是使用with語句設置的別名。 – 2012-02-03 03:44:25
@ClintGood非常感謝你。如果有超過2個重複的[樣本ID],您能否告訴我我需要運行幾次?例如spec123,spec123和spec123,使用quicklabdumpid 1,2,3 – 2012-02-03 04:23:07
非常感謝。你能告訴我克林特解決方案有什麼問題嗎? – 2012-02-03 17:47:49
@I__ - 它也會這樣做。性能可能有所不同。如果你想知道哪一個會更快,你必須對你的數據進行測試。 – 2012-02-03 18:03:14