Eliminar registros repetidos dejando 1

Iniciado por Shell Root, 19 Septiembre 2013, 23:33 PM

0 Miembros y 1 Visitante están viendo este tema.

Shell Root

Supongamos que tengo un registro que se repite varias veces,

ID1 ID2 ID3
204 5616 45
204 5616 45
204 5616 45
204 5616 45


Necesito eliminar los ultimos 3 registros, dejando el primero, como identifico las filas a eliminar.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

#!drvy

Y tu primary key ?  Si tienes algún identificador único (auto-increment) es bastante fácil.

Ejemplo:
ID   ID1    ID2     ID3
1     204    5616   45
2     204    5616   45
3     204    5616   45
4     204    5616   45

Código (sql) [Seleccionar]
DELETE p1 FROM shellroot as p1,shellroot as p2 WHERE p1.ID > p2.ID AND p1.ID1=p2.ID1 AND p1.ID2=p2.ID2 AND p1.ID3=p2.ID3

Esto hará eliminar todas menos ID=1.

Sino, puedes mirar esto:
http://www.databasejournal.com/features/mysql/article.php/10897_2201621_2/Deleting-Duplicate-Rows-in-a-MySQL-Database.htm

La idea es crear una tabla temporal, meter todos los registros usando DISTINCT borrar la tabla principal y volver a crearla con registros de la temporal.

Saludos

Shell Root

El problema es que aveces pueden ser 1, 2, 3, 4, ... elementos duplicados. Pero lo acabe de solucionar agregando un valor autonumerico y después eliminarlo.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.