Desarrollo y Tecnología > SQL > MYSQL > Encontrar filas repetidas en Mysql

Encontrar filas repetidas en Mysql

Mysql es una base de datos relacional, por lo que en general usamos relaciones (Dah !) que tienen que ser únicas a través de llaves primarias y foráneas. A veces nos pasan información que incluir en una tabla de manera directa que no necesariamente viene bien filtrada.

Cómo uno de nuestros fuertes en la empresa son los regalos corporativos, y dentro de ellos están los regalos de fin de año, muchas veces dependemos que las empresas con las cuales trabajamos nos manden la lista de empleados. En general esta información es entregada en un Excel o un CSV que puede tener datos repetidos que debemos filtrar.

Antiguamente para este objeto de encontrar filas repetidas realizaba un join de la tabla consigo misma, pero descubrí un método mucho más sencillo y menos tedioso.

SELECT * FROM `Empleados` group by `RUT` having count(*) >= 2 

De esta manera también podemos eliminar de la lista automáticamente los que estén repetidos.

Como no podemos actualizar una tabla en base a la misma, creamos una tabla temporal con estos datos.

CREATE TABLE temporal AS
SELECT `RUT` FROM `Empleados` group by `RUT` having count(*) >= 2

Ahora simplemente eliminamos los datos repetidos que aparecen en nuestra nueva tabla.

DELETE FROM `Empleados` 
WHERE `RUT` in (
    SELECT `RUT` from temporal
)
limit 1

Si bien el código anterior simplemente borra un solo registro, se entiende la idea. Ojo, si ejecutas nuevamente la sentencia existe la posibilidad que borres nuevamente el mismo registro que ya no estará repetido.

¡Mantengamos el contacto!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

¡MANTENGÁMONOS EN CONTACTO!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

2 thoughts on “Encontrar filas repetidas en Mysql”

  1. o cuando no tienes acceso a delete y create, puedes buscar los casos unicos con:
    select rut, nombre
    from empleados
    group by rut, nombre

    Reply
  2. o cuando no tienes acceso a delete y create, puedes buscar los casos unicos con:
    select rut, nombre
    from empleados
    group by rut, nombre

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Share to...