domingo, 3 de noviembre de 2013

php elminar duplicados de un array

<?php
 
 $lista = array(2010,2009,1999,2010,2010,2008,2010);
 $lista = array_unique($lista);
 $lista = array_values($lista);
 
?>
 
 
 
 
. 

mysql eliminar duplicados dejando una muestra


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