CodePráticov3.1.2
SQL

Como encontrar registros duplicados em SQL

Use GROUP BY e HAVING para descobrir quais valores aparecem mais de uma vez e depois recuperar as linhas completas.

Consulta básica

SELECT
    cpf,
    COUNT(*) AS quantidade
FROM alunos
WHERE cpf IS NOT NULL
GROUP BY cpf
HAVING COUNT(*) > 1;

Trazer os registros completos

SELECT a.*
FROM alunos a
INNER JOIN (
    SELECT cpf
    FROM alunos
    WHERE cpf IS NOT NULL
    GROUP BY cpf
    HAVING COUNT(*) > 1
) d ON d.cpf = a.cpf
ORDER BY a.cpf, a.id;

Antes de excluir

Atenção: antes de remover duplicidades, defina qual registro deve ser preservado e verifique relacionamentos com outras tabelas.