
Vamos a ver como eliminar registros duplicados de una tabla.
Primero de todo comentar que hay que tener mucho cuidado con este tipo de sentencias SQL ya que podemos eliminar, cosas que no queríamos.
Así que antes de nada deberíamos hacer una copia de seguridad.
Y una vez dicho esto, y espero que hayas hecho la copia de seguridad, vamos al lío.
Supongamos que tenemos una tabla llamada «users» y no se ha creado correctamente, ya sea por haberlo hecho mal, o heredarlo de algún proyecto antiguo.
Y en dicha tabla pues tenemos varios usuarios con el email repetido, y nos queremos quedar simplemente con los usuarios más nuevos.
Lo que vamos a hacer es hacer unir la tabla consigo misma mediante un INNER JOIN y lo compararemos con la clave auto numérica, que en este caso es idUser,
1 2 3 4 | DELETE table1 FROM users table1 INNER JOIN users table2 WHERE table1.idUser < table2.idUser AND table1.email = table2.email; |
Y con eso eliminaremos los registros duplicados con el idUser menor y así nos quedaremos con los más nuevos.
Si queremos quedarnos con los nuevos, solo tendríamos que poner la condición al reves:
1 2 3 4 | DELETE table1 FROM users table1 INNER JOIN users table2 WHERE table1.idUser > table2.idUser AND table1.email = table2.email; |
Y con eso ya lo tendremos, eliminaremos esos registros duplicados en nuestra base de datos tan molestos.
Y recordad! No olvidéis comentar! Vuestro código y en el Blog 😉