Buscar Registros Duplicados con SQL y Como Eliminarlos

MANUAL~1

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.

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 sañdrán 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

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s