La identificación y eliminación de registros duplicados en bases de datos es crucial para mantener la integridad de los datos. Los duplicados pueden surgir por varias razones, como errores de entrada de datos, problemas de importación y más. Este README proporciona ejemplos de cómo buscar registros duplicados en SQL, ayudando a limpiar y optimizar tus bases de datos.
A continuación se define una tabla llamada clientes que contiene registros repetidos:
| id | nombre | email |
|-----|-----------------|---------------------|
| 1 | Juan Pérez | juan@example.com |
| 2 | María González | maria@example.com |
| 3 | Juan Pérez | juan@example.com |
| 4 | Pedro Rodríguez | pedro@example.com |
| 5 | Ana Martínez | ana@example.com |
| 6 | Juan Pérez | juan@example.com |
| 7 | Luis Fernández | luis@example.com | 1. Buscar Registros DuplicadosPara buscar registros duplicados en la tabla clientes, puedes utilizar la siguiente consulta SQL:
SELECT nombre, email, COUNT(*) AS cantidad
FROM clientes
GROUP BY nombre, email
HAVING COUNT(*) > 1; Esta consulta devolverá los registros duplicados junto con el conteo de cuántas veces aparecen:
| nombre | email | cantidad |
|----------------|----------------------|----------|
| Juan Pérez | juan@example.com | 3 | 2. Eliminar Registros DuplicadosSi deseas eliminar los registros duplicados, manteniendo solo uno de ellos, puedes utilizar una consulta como la siguiente:
DELETE FROM clientes
WHERE id NOT IN (
SELECT MIN(id)
FROM clientes
GROUP BY nombre, email
); | nombre | email | cantidad |
|----------------|----------------------|----------|
| Juan Pérez | juan@example.com | 3 |
| María López | maria@example.com | 1 |
| Ana Martínez | ana@example.com | 2 | Esta consulta eliminará los duplicados, dejando solo el registro con el id más bajo.
3. Crear una Nueva Tabla Sin DuplicadosSi prefieres crear una nueva tabla que contenga solo los registros únicos, puedes utilizar:
CREATE TABLE clientes_unicos AS SELECT DISTINCT * FROM clientes; Esto creará una nueva tabla llamada clientes_unicos que solo contendrá registros únicos.
| id | nombre | email |
|----|-----------------|---------------------|
| 1 | Juan Pérez | juan@example.com |
| 2 | María González | maria@example.com |
| 4 | Pedro Rodríguez | pedro@example.com |
| 5 | Ana Martínez | ana@example.com |
| 7 | Luis Fernández | luis@example.com | 4. Consultar Registros ÚnicosPara simplemente consultar los registros únicos de la tabla clientes, utiliza la siguiente consulta:
SELECT DISTINCT nombre, email FROM clientes; | nombre | email |
|-----------------|--------------------|
| Juan Pérez | juan@example.com |
| María González | maria@example.com |
| Pedro Rodríguez | pedro@example.com |
| Ana Martínez | ana@example.com |
| Luis Fernández | luis@example.com |