2012-02-03 32 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