Howto: Localizando e removendo registros duplicados – SQL

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:

SELECT
    email,
    count(*)
FROM pessoa
WHERE
   email <> ''
GROUP BY email
HAVING COUNT(*) > 1

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:

SELECT
    email,
    nome
FROM
    pessoa tab1
WHERE (SELECT count(*) FROM pessoa tab2 WHERE tab2.email = tab1.email) > 1

Neste caso mostra além do registro duplicado outra coluna (nome) que julgar necessário. Ou assim também:

SELECT
    email, 
    equipe,
    count(*) as total_duplicados
FROM pessoa
WHERE
   email <> '' and equipe IN (10,11)
GROUP BY email, equipe
HAVING COUNT(*) > 1

Exibirá os registros duplicados da equipe 10 e 11, informando na última coluna quantas vezes o mesmo encontra-se duplicado.

Simples assim.

Leave a Reply

Your email address will not be published. Required fields are marked *