Buscar registros duplicados con MySQL

Vamos a ver como buscar registros duplicados usando MySQL.

En este ejemplo tenemos la siguiente tabla de personas:

id_personaNombreApellidosemail
1AlbertoMartínez Roviraoyagum@gmail.com
2JuanLópez Romanjlopez@gmail.com
3MaríaSanchez Sanchezmsanchez@gmail.com
4PedroAlmodovarpalmodovar@gmail.com
5AlbertMartínezoyagum@gmail.com

Y como podeis ver a simple vista, hay emails que se encuentran repetidos, aquí es fácil de ver porque son muy pocos registros.

Pero primero, no nos vamos a fiarnos solo de nuestra vista y segundo, ¿porqué vamos a hacer nosotros el trabajo si lo puede hacer una máquina?

Así que realizaremos la siguiente consulta para saber cuantos e-mails hay repetidos:

En la consulta le hemos dicho que nos devuelva el total de emails repetidos que hay con lo cual nos devolverá lo siguiente:

total_repetidosemail
2oyagum@gmail.com

Como veis lo que nos retorna la consulta es el número de total de repetidos que tenemos y el email en cuestión, así podemos saber cuantos hay repetidos y cual es el repetido.

Espero que os haya servido de ayuda.

Recordad! No olvidéis de comentar! Vuestro código y en el Blog! 😉

8 Comments

    Mario

    ¿como borrarías desde sql solo el duplicado dejando el primer registro en que aparece intacto?

    Oyagum

    Buenas,

    Primero de todo darte las gracias por leer mi blog, y segundo y respondiéndote, he creado un post para responder a tu pregunta:

    Puedes ver la entrada aquí: https://www.oyagum.com/articulos/eliminar-registros-duplicados-de-una-tabla/

    Jorge

    Hola Oyagum, ¿cómo sería la consulta si necesito evaluar dos columnas con valores repetidos?
    Saludos y gracias por compartir saberes!

    Oyagum

    Hola Jorge,

    Simplemente tendrías que agrupar por las dos columnas, la consulta quedaría tal que así:

    SELECT COUNT(*) total_repetidos, email FROM personas GROUP By nombre, email HAVING total_repetidos > 1

    Así cogeríamos los que tienen el mismo nombre y email.

    Espero que te haya ayudado.

    Y muchas gracias a ti por comentar 😉

    Romualdo Zarco

    Saludos, Gracias me ha sido util su informacion.

      Oyagum

      Gracias a ti por leerme 😉

    Gislaine

    muchas gracias!
    Y como podría aplicar ese filtro solamente para una lista de id?
    Explico:
    tengo una serie de 10 id distintos
    y quiero saber si los datos que contienen los 10 id seleccionados existen en otro ID de la misma tabla
    Intente con «IN» en «where» pero no sale.

      Oyagum

      Bueno, primero de todo gracias por visitarme y comentar 😉

      A ver si te he entendido y te sirve.

      Me he creado una tabla llamada ides con un id autonumérico y un campo id2 que tiene los ids autonuméricos. Y he añadido el campo checked con 0 o 1 y estoy cogiendo todos los registros en que el id2 tenga los ids que estan checked.

      Espero te sirva, cualquier cosa me dices.

      SELECT * FROM ides WHERE id2 IN (SELECT id FROM ides WHERE checked = 1)

Deja una respuesta

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

*
*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.