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

Excluindo linhas duplicadas de uma tabela


Sim, supondo que você tenha um campo de ID exclusivo, você pode excluir todos os registros iguais, exceto o ID, mas que não tenham "o ID mínimo" para o grupo de valores.

Exemplo de consulta:
DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)

Notas:
  • Escolhi livremente "Tabela" e "ID" como nomes representativos
  • A lista de campos ("Field1, Field2, ...") deve incluir todos os campos, exceto o ID
  • Esta pode ser uma consulta lenta dependendo do número de campos e linhas, mas espero que seja boa em comparação com as alternativas

EDIT:Caso você não tenha um índice exclusivo, minha recomendação é simplesmente adicionar um índice exclusivo auto-incremental. Principalmente porque é um bom design, mas também porque permitirá que você execute a consulta acima.