Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Shell Root en 19 Septiembre 2013, 23:33 pm



Título: Eliminar registros repetidos dejando 1
Publicado por: Shell Root en 19 Septiembre 2013, 23:33 pm
Supongamos que tengo un registro que se repite varias veces,

Código:
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.


Título: Re: Eliminar registros repetidos dejando 1
Publicado por: #!drvy en 20 Septiembre 2013, 01:41 am
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
  1. 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


Título: Re: Eliminar registros repetidos dejando 1
Publicado por: Shell Root en 20 Septiembre 2013, 05:11 am
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.