Anda di halaman 1dari 2

Buscar Registros Duplicados con SQL y como Eliminarlos

Descripcin: Esta sentencia SQL es muy importante ya si queremos migrar una BD la podemos utilizar para saber que registros de nuestra BD estan duplicado o repetidos.

Cdigo Consulta SQL SELECT * FROM ( SELECT campo1, campo2, campo3, campo4, COUNT( * ) AS TotalIguales FROM Table GROUP BY campo1, campo2, campo3, campo4 ) AS Result WHERE TotalIguales>1 Donde:

Campo1,Campo2....: son los atributos de la tabla que queremos saber si hay o no datos repetidos. AS TatalIguales: Le asignamos este nombre a la columna donde sadrn la cantidad de veces que se duplica un registro GROUP BY campo1,campo2...: agrupamos por dichos campos WHERE TotalIguales>1: Mostrar todos los campos que estan mas de 1 vez.

Eliminar Duplicados Creamos el Siguiente Procedimiento: DECLARE @campo1 int, @campo2 int,@campo3 int, @repeticiones int; DECLARE @sqlexec varchar(200) DECLARE dup_cursor CURSOR FOR SELECT campo1, campo2, campo3, repeticiones FROM tabtemp OPEN dup_cursor; FETCH NEXT FROM dup_cursor INTO @campo1, @campo2, @campo3, @repeticiones; WHILE @@FETCH_STATUS = 0 BEGIN SET @sqlexec = set rowcount + CAST( (@repeticiones 1) AS VARCHAR(3)) +

delete from relSright where campo1 = + CAST( @campo1 AS VARCHAR(10)) + and campo2 = + CAST( @campo2 AS VARCHAR(10)) + and campo3 = + CAST(@campo3 AS VARCHAR(10)) EXEC(@sqlexec) FETCH NEXT FROM dup_cursor INTO @campo1, @campo2, @campo3, @repeticiones; END CLOSE dup_cursor; DEALLOCATE dup_cursor; @campo1,campo2... tienen que declararlo con el mismo tipo de variable a la que desean eliminar

Anda mungkin juga menyukai