Existe una opción muy útil cuando queremos eliminar registros duplicados, en este articulo se muestra como hacerlo.
La manera más rápida de eliminar registros duplicados en una tabla es la siguiente:
Primero creamos una tabla temporal
select *
into tabla_temp
from tabla_orig
where 1=0
Luego, crear un índice único sobre las columnas, que cubra las filas duplicadas con el atributo ignore_dup_key.
create unique index idx_temp
on tabla_temp(col1, col2, ..., colN)
with ignore_dup_key
Ahora, insertar las filas de tabla_orig en la tabla tabla_temp.
insert tabla_temp
select * from tabla_orig
Es importante tener una respaldo de la tabla original, ya que el siguiente paso consiste en eliminarla. Otras consideraciones a tomar en cuenta son revisar que no existan triggers en la tabla original, ni reglas de integridad referencial pues no queremos que alguna de estars reglas de disparen.
Por último, tenemos un par de opciones. Podemos simplemente borrar la tabla original y renombrar la tabla temporal con el mismo nombre de la tabla original. Otra alternativa es truncar la tabla original e insertar las filas de la tabla temporal. Podemos hacer esto si requerimos que se disparen reglas de integridad referencial sobre la tabla original, o algo así. En la mayor parte de los casos, borrar y renombrar es la mejor opción.
Si usas SQL Server también te funciona este método.