Descubrir registros duplicados en una base de datos

Hoy tenía la necesidad de encontrar registros (filas) duplicados en una base de datos en base a distintas columnas. No es una consulta SQL complicada, pero todos nos atascamos en algo:

SELECT attr1, attr2, .. ,attrN, COUNT(*) AS Registros
FROM XTable
GROUP BY attr1, attr2, .. ,attrN
HAVING (COUNT(*) > 1)

Donde attrX es el nombre de la columna que queramos que entre en la comparación. Variando las columnas obtenemos distintos criterios.

Por ejemplo en una tabla Persona podemos ver:

1) Aquellos con el nombre igual:

SELECT nombre, COUNT(*) AS Registros
FROM Persona
GROUP BY nombre
HAVING (COUNT(*) > 1)

2) Aquellos con el nombre y los apellidos iguales:

SELECT nombre, apellido1, apellido2, COUNT(*) AS Registros
FROM Persona
GROUP BY nombre, apellido1, apellido2
HAVING (COUNT(*) > 1)

que obviamente deben ser menos.

0 comentarios:

Publicar un comentario en la entrada