Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Remover entradas duplicadas em uma tabela MySQL


Você pode fazer isso facilmente selecionando essa consulta em outra tabela e renomeando-a para substituir a original.
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`;

Observe que este CREATE deve ser ajustado ao seu formato de tabela real. Eu adicionei a chave exclusiva no campo de e-mail como uma sugestão sobre como você evitaria duplicatas em primeiro lugar.

Alternativamente, você pode fazer um loop sobre isso
DELETE FROM `table` 
WHERE `email` IN (
  SELECT `email` FROM `table` GROUP BY `email` HAVING count(*) > 1
) LIMIT 1

O que excluiria um registro duplicado por chamada. A importância do limite é não remover ambas as linhas para qualquer duplicata