Las mejores prácticas de diseño de bases de datos recomiendan usar la restricción ÚNICA para evitar duplicados en una base de datos. Sin embargo, cuando trabaje con una base de datos mal diseñada o con datos sucios, es posible que deba encontrar duplicados usted mismo y eliminarlos manualmente.
Siga leyendo para saber cómo encontrar duplicados en una base de datos SQL y cómo eliminarlos.
Crear una base de datos de muestra
Para fines de demostración, cree una tabla denominada Usuarios con una columna de nombre y puntuación ejecutando esta consulta SQL.
GOTAMESASIEXISTEUsuarios;
CREARMESAUsuarios (
pk_id En t CLAVE PRIMARIA,
nombre VARCHAR (16),
anotar INT,
);
Inserte algunos valores de muestra ejecutando esta consulta:
INSERTAREN
Usuarios (pk_id, nombre, puntuación)
VALORES
(1, 'Jane', 20),
(2, 'John', 13),
(3, 'Alex', 32),
(4, 'John', 46),
(5, 'Jane', 20),
(6, 'María', 34),
(7, 'Jane', 20),
(8, 'John', 13)
Tenga en cuenta que algunas de estas filas contienen valores duplicados para la columna de nombre.
Siéntete libre de revisar estos Consultas y comandos SQL si necesita una explicación más detallada de cómo manipular bases de datos usando SQL.
Usando GROUP BY para encontrar valores duplicados
Puede use la instrucción GROUP BY para organizar los valores que cumplen determinadas condiciones en un mismo grupo.
Digamos que los nombres en la tabla de muestra tienen que ser únicos. Puede usar GROUP BY para agrupar las filas que comparten el mismo nombre.
SELECCIONARnombre, CONTAR(nombre)
DE Usuarios
AGRUPAR POR nombre
TENER CONTEO(nombre) > 1
COUNT le permite seleccionar las filas que tienen más de un usuario con el mismo nombre.
Cuando ejecute esta consulta, la base de datos devolverá las filas que contienen a John y Jane como duplicados.
Eliminación de duplicados de una base de datos
Después de encontrar los duplicados, es posible que desee eliminarlos mediante la instrucción DELETE.
Para este ejemplo, ejecute la siguiente consulta:
CON cte COMO (
SELECCIONAR *
ROW_NUMBER() SOBRE (
PARTICIÓN POR
nombre, puntaje
ORDENAR POR
nombre, puntaje
) R
DE
Usuarios
)
BORRARDE cte
DONDE R > 1;
Esta consulta usa una expresión CTE para encontrar los duplicados y luego los elimina todos excepto uno.
Por qué debería eliminar los datos duplicados
Eliminar datos duplicados no es obligatorio. Sin embargo, le permite liberar el espacio que usan las filas duplicadas.
Menos filas también significa que las consultas pueden ejecutarse mucho más rápido, lo que lleva a un mayor rendimiento. Utilice las consultas de este tutorial para encontrar y eliminar duplicados de una base de datos SQL.