2012-02-03 19 views

Respuesta

13

cambiar su orden por el que quicklabdumpid DESC.

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

muchas gracias. ¿Puede decirme por favor si hay algún problema con la solución de clint? –

+0

@I__ - Hará lo mismo. Puede haber una diferencia en el rendimiento. Si quiere saber cuál será más rápido, debe probarlos con sus datos. –

4

hay necesidad de partición

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

simplemente curioso, ¿está borrando de 'quicklabdump' aquí y @I__ está borrando de' cte'? – cctan

+0

@cctan - cte es un alias que se configura con la instrucción with. –

+0

@ClintBueno muchas gracias por esto. ¿Podrías decirme por favor si tendré que ejecutar esto varias veces si hay más de 2 [ID de espécimen] duplicados? por ejemplo, spec123, spec123 y spec123, con quicklabdumpid 1, 2, 3 –

Cuestiones relacionadas