Howto: Como apagar registros duplicados no MySQL.
Existem diversas técnicas para remover duplicidade em um Banco de Dados, porém pra mim, a solução mais simples é usar UNIQUE INDEX. Veja como funciona…
ALTER IGNORE TABLE ‘tabela‘ ADD UNIQUE INDEX(campos_que_nao_vao_se_repetir);
Exemplo:
ALTER IGNORE TABLE ‘usuario‘ ADD UNIQUE INDEX(email);
Lembrando que após realizar este procedimento, o campo indicado será único, ou seja, não irá permitir mais duplicidade. Você pode até adicionar mais de um campo, simples assim.
Agora, se você quer apenas verificar se existe duplicidade, existe algumas querys simples para isso:
[sql]
SELECT
email,
count(*)
FROM pessoa
WHERE
email <> ”
GROUP BY email
HAVING COUNT(*) > 1
[/sql]
Neste exemplo, será exibido duas colunas, a primeira com os registros que existem duplicados e na segunda o número de registros com a mesma informação.
Outro exemplo:
[sql]
SELECT
email,
nome
FROM
pessoa tab1
WHERE (SELECT count(*) FROM pessoa tab2 WHERE tab2.email = tab1.email) > 1
[/sql]
Neste caso mostra além do registro duplicado outra coluna (nome) que julgar necessário. Ou assim também:
[sql]
SELECT
email,
equipe,
count(*) as total_duplicados
FROM pessoa
WHERE
email <> ” and equipe IN (10,11)
GROUP BY email, equipe
HAVING COUNT(*) > 1
[/sql]
Exibirá os registros duplicados da equipe 10 e 11, informando na última coluna quantas vezes o mesmo encontra-se duplicado.
Simples assim.