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.

Mostrar registros duplicados en una tabla MySQL
Mostrar registros duplicados en una tabla MySQL

¿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

Resultados con registros duplicados usando IN
Resultados con registros duplicados usando IN

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

Duplicados

2 comentarios en “Mostrar registros duplicados en una tabla MySQL”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio