Mysql
 sql >> Database >  >> RDS >> Mysql

Rimuovere le voci duplicate in una tabella MySQL

Puoi farlo abbastanza facilmente selezionando quella query in un'altra tabella, quindi rinominandola per sostituire l'originale.

CREATE TABLE `table2` (
  `name` varchar(255), 
  `email` varchar(255), 
  UNIQUE KEY `email` (`email`));
INSERT INTO `table2` SELECT `name`, DISTINCT(`email`) FROM `table`;
RENAME TABLE `table` TO `table1`;
RENAME TABLE `table2` TO `table`;

Nota che questo CREATE dovrebbe essere adattato al formato della tabella attuale. Ho aggiunto la chiave univoca nel campo dell'e-mail come suggerimento su come prevenire i duplicati in primo luogo.

In alternativa, puoi eseguire il loop su questo

DELETE FROM `table` 
WHERE `email` IN (
  SELECT `email` FROM `table` GROUP BY `email` HAVING count(*) > 1
) LIMIT 1

Che eliminerebbe un record duplicato per chiamata. L'importanza del limite è di non rimuovere entrambe le righe per eventuali duplicati