Ver Mensaje Individual
  #5 (permalink)  
Antiguo 29/03/2007, 20:32
Avatar de Manoloweb
Manoloweb
 
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 23 años, 1 mes
Puntos: 5
Re: Como encontrar registros duplicados en una base de datos

Pues mira, haciendo unas pequeñas pruebitas logré sacar dos queries, uno que te regresa todos los registros que debes conservar, y el segundo todos los que debes borrar despues de ese primero...

La tabla que usé es esta:
Código:
CREATE TABLE `test` (
  `id` int(11) NOT NULL auto_increment,
  `nombre` varchar(50) default NULL,
  `fecha` timestamp NOT NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
Y los queries son estos:

a) Conservar los registros con estos ID: o sea, correr un delete from test where id not in({aqui pegas el resultado de este query como cadena separada por comas})
Código:
select distinct a.id from test a left join test b on (a.nombre=b.nombre and a.id!=b.id and a.id<b.id) where b.id is not null


b) Despues corres otro delete de los id's que resulten de este segundo query...
Código:
select distinct b.id from test a left join test b on (a.nombre=b.nombre and a.id!=b.id and a.id<b.id) where b.id is not null
Tal vez se ve medio complejo, pero es simple, con dos queries consigues tu resultado, y no saturas de funcionalidad a PHP, le dejas casi todo a la BD...

Saludos!
__________________
Manoloweb