Mostrar registros duplicados en una tabla MySQL
Mostrar registros duplicados. En algunos casos es necesario sacar un reporte con datos repetidos en nuestra tabla de MySQL. Si bien, cuando los registros son pocos podemos hacer la tarea de forma manual, pero se dificulta cuando son miles de registros.
Mostrar registros duplicados: Clave primaria
Desde un punto de vista si hay clave primaria no debería haber duplicados, pero podemos buscar los registros cuyos campos tengan el mismo valor. Por lo tanto, sean duplicados a la hora de sacar un determinado reporte de la tabla.
¿Cómo darle el trabajo a nuestro computador o servidor?
Esta tarea bien puede ser asignado a una maquina siempre y cuando le demos las instrucciones
Para este ejemplo, usaremos una tabla llamada «países» con 3 columnas (id, codigo, nombre). Sin embargo, nuestra tarea será mostrar contenido duplicado en las columnas.
Tabla MySQL: Países
CREATE TABLE `paises` ( `id` int(11) NOT NULL, `codigo` varchar(4) DEFAULT NULL, `nombre` varchar(150) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `paises` (`id`, `codigo`, `nombre`) VALUES (1, 'UK', 'Reino Unido'), (2, 'CO', 'Colombia'), (3, 'CN', 'China'), (4, 'FR', 'Francia'), (5, 'DK', 'Dinamarca'), (6, 'MX', 'Mexico'), (7, 'CO', 'Colombia'), (8, 'CN', 'China'), (9, 'IN', 'India'), (10, 'FR', 'Francia'); ALTER TABLE `paises` ADD PRIMARY KEY (`id`); ALTER TABLE `paises` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
A continuación, veremos 3 formas para poder encontrar campos o registros duplicados.
Mostrar registros duplicados: 3 formas de hacerlo
Aquí veremos tres formas para listar registros que posean datos repetidos.
a) Primera Forma
Usaremos la sentencia de MySQL COUNT()
para lograr nuestro objetico, además de la sentencia GROUP BY
La consulta SQL es la siguiente:
SELECT codigo, nombre, COUNT(*) as Total FROM paises GROUP BY nombre HAVING COUNT(*) > 1
En la consulta anterior nos devuelva el total de países repetidos que existe en la tabla países y el resultado es como en la siguiente imagen:
b) Segunda Forma
Aquí usaremos la sentencia IN dentro de la cláusula WHERE la aplicar nuestra consulta SQL
Consulta SQL
SELECT codigo, nombre FROM paises WHERE codigo IN (SELECT codigo FROM paises GROUP BY codigo HAVING count(codigo) >1) ORDER BY codigo
Resultados luego de aplicar la consulta
c) Tercera Forma
Esta opción es muy sencilla y solo usa HAVING COUNT apoyado de la cláusula GROUP BY para mostrar registros repetidos.
SQL del ejemplo
SELECT codigo, nombre FROM paises GROUP BY nombre HAVING COUNT( * ) >1
CONCLUSIÓN
En este artículo hemos aprendido a buscar si dentro de una determinada tabla hay campos repetidos, y si hay contar el número total de registros duplicados.
Haciendo consultas sencillas como GROUP BY y HAVING hemos aprendido a filtrar registros similares
Espero que esta pequeña explicación sea de su agrado.
Referencia
muchas gracias
buenísima amigo les felicito es una exelente sitio