sql >> Base de Datos >  >> RDS >> Mysql

Eliminar filas duplicadas de una tabla

Sí, suponiendo que tenga un campo de ID único, puede eliminar todos los registros que sean iguales excepto por el ID, pero que no tengan "el ID mínimo" para su grupo de valores.

Ejemplo de consulta:

DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)

Notas:

  • Elegí libremente "Tabla" e "ID" como nombres representativos
  • La lista de campos ("Campo1, Campo2, ...") debe incluir todos los campos excepto el ID
  • Esta puede ser una consulta lenta dependiendo de la cantidad de campos y filas, sin embargo, espero que esté bien en comparación con las alternativas

EDITAR:en caso de que no tenga un índice único, mi recomendación es simplemente agregar un índice único autoincremental. Principalmente porque tiene un buen diseño, pero también porque te permitirá ejecutar la consulta anterior.