Excluindo registros duplicados no MySQL

Vamos supor que você possua uma tabela e por algum motivo os registros da tabela foram duplicados. Agora imagine que são milhares de registros e que você não pode ficar procurando os registros repetidos um a um.

Para isto, temos um comando SQL mágico, que irá remover os registros duplicados, mantendo apenas uma cópia de cada.

No nosso exemplo, vamos utilizar a tabela clientes, que possui os campos: id, nome, email, nascimento.

E o comando SQL ficaria assim:

DELETE t1 FROM clientes t1, clientes t2 WHERE t1.id < t2.id AND t1.nome = t2.nome AND t1.email = t2.email AND t1.nascimento = t2.nascimento

No comando acima, estamos verificando os registros que possuem o mesmo nome, email e nascimento. Todos os registros duplicados serão excluídos, exceto um, que por convenção, será o que possui o campo ID com número maior. Caso fosse necessário manter o registro com o menor ID, bastaria substituir o sinal de < por >.

Lembre-se: antes de executar qualquer comando, execute-o em uma base de dados de testes. Isso irá evitar de dores de cabeça.

Até a próxima 😉

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *