¿Cómo deshacerse de duplicados en MySQL?

Escrito por laura gittins | Traducido por jaime alvarez
  • Comparte
  • Twittea
  • Comparte
  • Pin
  • E-mail
¿Cómo deshacerse de duplicados en MySQL?
MySQL permite eliminar registros duplicados en una tabla. (Jupiterimages/Brand X Pictures/Getty Images)

Si tu tabla de MySQL contiene cientos o miles de registros, no deberás buscar de forma manual a través de cada uno para tratar de identificar registros duplicados. MySQL no tiene una consulta única que puedas utilizar para eliminar los registros duplicados en una tabla, pero puedes utilizar una combinación de consultas y ejecutarlas en conjunto para eliminar tus duplicados. Incluso si tu tabla utiliza una clave principal para identificar los registros únicos, puedes eliminar los duplicados no seleccionando el campo de clave primaria en tus consultas.

Nivel de dificultad:
Moderadamente fácil

Otras personas están leyendo

Instrucciones

  1. 1

    Inicia sesión en tu base de datos MySQL y accede a la herramienta de consulta.

  2. 2

    Introduce la siguiente consulta:

    CREATE TEMPORARY TABLE temp SELECT DISTINCT col1,col2,col3 FROM nombre_tabla GROUP BY col1,col2,col3 HAVING COUNT(*)>1;

    Esto crea una tabla temporal que comprueba la tabla suministrada por "nombre_tabla" y cuando encuentra un registro duplicado, lo inserta en la tabla temporal, pero sólo una vez. Por ejemplo, si "nombre_tabla" tiene tres entradas, "Jim", "Bob" y "Bob", la tabla "temp" sólo tendrá un registro: "Bob". Si "col1" actúa como un campo de clave principal en la tabla, no incluyas "col1" en la consulta y sólo selecciona las otras dos columnas.

  3. 3

    Introduce la siguiente consulta:

    DELETE FROM nombre_tabla WHERE (col1,col2,col3) IN (SELECT col1,col2,col3 FROM temp);

    Esta consulta comprueba cada registro "nombre_tabla" y elimina todos los registros que tienen duplicados, incluyendo el original. Por ejemplo, si la tabla tiene tres entradas, "Jim", "Bob" y "Bob", la consulta eliminarán los dos registros de "Bob" dejando sólo "Jim" en "nombre_tabla". Una vez más, elimina las referencias a "col1" en la consulta si "col1" es el campo de clave principal.

  4. 4

    Introduce la siguiente consulta:

    INSERT INTO nombre_tabla(col1,col2,col3) SELECT col1,col2,col3 FROM temp;

    Esta consulta esencialmente copia todos los registros de la tabla temporal y la inserta de nuevo en "nombre_tabla". Si en este momento "nombre_tabla" sólo tiene a "Jim" y "temp" sólo tiene "Bob"; después de la consulta, "nombre_tabla" tendrá los registros "Bob" y "Jim", mientras que la tabla temporal se elimina. Recuerda eliminar las referencias a "col1" si se trata de una clave principal.

  5. 5

    Ejecuta todas las consultas.

No dejes de ver

Filtrar por:
  • Mostrar todos
  • Artículos
  • Galerías de fotos
  • Videos
Ordenar:
  • Más relevante
  • Más popular
  • Más reciente

No se encuentran artículos disponibles

No se encuentran slideshows disponibles

No se encuentran videos disponibles