Borrar filas repetidas de una tabla con una consulta SQL
Muchas veces nos ha pasado que queremos eliminar filas repetidas en una tabla.
Una de las formas más sencilla que existe es ejecutando la siguiente consulta SQL:
SELECT DISTINCT T2.id FROM Tabla T1, Tabla T2 WHERE T1.campo_repetido = T2.campo_repetido AND T1.id < T2.id
Lo que hace esta consulta SQL es coger los identificadores de filas que tengan un campo repetido en una fila con un identificador menor, lo que nos da una fila por repetición, con lo que podremos escoger las que sean distintas.
Con eso tenemos todos aquellos identificadores de filas que se han repetido alguna vez, pero que no son iguales al menor identificador de fila que se repite. Es decir, conservamos los identificadores originales anteriores a la repetición.
Si queremos borrar dichas filas:
DELETE FROM Tabla WHERE id IN ( SELECT DISTINCT T2.id FROM Tabla T1, Tabla T2 WHERE T1.campo_repetido = T2.campo_repetido AND T1.id < T2.id )