Borrar filas repetidas de una tabla con una consulta SQL

Saturday, November 21, 2009 12:49
Posted in category Programación

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 
	    )
You can leave a response, or trackback from your own site.

One Response to “Borrar filas repetidas de una tabla con una consulta SQL”

  1. Soledad Vogel says:

    October 18th, 2016 at 3:56 pm

    Muy fácil de entender y seguir las instrucciones. Funcionó perfecto para lo que necesitaba. Gracias

Leave a Reply