2012-02-03 34 views

回答

13

通過向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 
+0

非常感謝。你能告訴我克林特解決方案有什麼問題嗎? – 2012-02-03 17:47:49

+0

@I__ - 它也會這樣做。性能可能有所不同。如果你想知道哪一個會更快,你必須對你的數據進行測試。 – 2012-02-03 18:03:14

4

無需多次出現的分區

delete q 
    from quicklabdump q 
    where exists 
    (
    select * 
     from quicklabdump q2 
     where q2.[specimen id] = q.[specimen id] and 
     q2.quicklabdumpID > q.quicklabdumpID 
) 
+0

只是好奇,你是從'quicklabdump'這裏刪除,@I__是從'cte'刪除嗎? – cctan 2012-02-03 02:18:08

+0

@cctan - cte是使用with語句設置的別名。 – 2012-02-03 03:44:25

+0

@ClintGood非常感謝你。如果有超過2個重複的[樣本ID],您能否告訴我我需要運行幾次?例如spec123,spec123和spec123,使用quicklabdumpid 1,2,3 – 2012-02-03 04:23:07