Script para eliminar registros o filas duplicadas

Generalmente, cuando importamos datos a una tabla podemos llegar a tener algunos registros duplicados. El problema es como deshacernos de ellos, sin revisar uno por uno los registros o filas, que en algunos casos pueden pasar de las decenas de miles.

Con el siguiente script puede ser más sencillo (hay que adaptarlo segun la tabla):

/*******************************************************************/
/* Script para eliminar registros duplicados de tabla Empleados */
Declare @id int,
@name varchar (50),
@cnt int,
@salary numeric

Declare getallrecords cursor local static For
Select count (1), id, name, salary
from employee (nolock)
group by id, name,salary having count(1)>1

Open getallrecords

Fetch next from getallrecords into @cnt,@id,@name,@salary
--cursor para chequear los otros registros
While @@fetch_status=0
Begin
Set @cnt= @cnt-1
Set rowcount @cnt

-- eliminar los registros duplicados. Observa que todos los campos son mencionados -- en la condicion
Delete from employee where id=@id and name=@name
and salary=@salary

Set rowcount 0

Fetch next from getallrecords into @cnt,@id,@name,@salary
End

Close getallrecords
Deallocate getallrecords

*******************************************************************

Antes que todo hay que realizar una copia de seguridad, para darnos cuenta como trabaja el script. Lo recomiendo, y antes de ejecutarlo contra datos importantes, pruebalo con una tabla de prueba, no me responsabilizo por pérdida de datos importantes.