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!