CREATE TABLE `prueba` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`titulo` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
--
-- Volcar la base de datos para la tabla `prueba`
--
INSERT INTO `prueba` VALUES (1, 'titulo1');
INSERT INTO `prueba` VALUES (2, 'titulo2');
INSERT INTO `prueba` VALUES (3, 'titulo1');
INSERT INTO `prueba` VALUES (4, 'titulo3');
INSERT INTO `prueba` VALUES (5, 'titulo1');
INSERT INTO `prueba` VALUES (6, 'titulo2');
INSERT INTO `prueba` VALUES (7, 'titulo1');
//******************************
NOTA: COPIADO DE
http://andalinux.wordpress.com/2013/04/15/sql-eliminar-entradas-duplicadas-dejando-una-de-muestra/
Dejar la entrada más antigua
Si queremos eliminar todas las entradas duplicadas dejando la primera
aparición (la más vieja, la que tiene menor ID) lanzaremos la siguiente
sentencia SQL
|
DELETE n1
FROM prueba n1, prueba n2
WHERE n1.titulo = n2.titulo
AND n1.id > n2.id;
|
Dejar la última aparición
Si queremos eliminar todas las entradas duplicadas menos la más
reciente (la más nueva, la que tiene mayor ID) lanzaremos la siguiente
consulta SQL
|
DELETE n1
FROM prueba n1, prueba n2
WHERE n1.titulo = n2.titulo
AND n1.id < n2.id;
|
NOTA: Observa que el único cambio ha sido
n1.id < n2.id en lugar de
n1.id > n2.id