Como recuperar registros duplicados com SQL

Olá pessoas, como a memória falha algumas vezes, ontem me deparei com uma consulta simples, mas demorei um pouco para lembrar como “identificar somente os registros com determinado valor duplicados com SQL”, assim preparei um artigo rápido para exemplificar um cenário e as soluções.

Para termos um problema para tratar, criarei um cenário com uma tabela e vários registros com Ids duplicados:

Para recuperar uma relação somente dos Ids sem contar os duplicados, podemos utilizar um DISTINCT ou um GROUP BY:

Com a ajuda da função COUNT, podemos identificar o número de ocorrências de cada Id:

E com a clausula HAVING, podemos filtrar os Ids por número de ocorrências:

Por fim, com um condicional IN, identificamos os registros com Ids duplicados ou que somente ocorrem uma vez:

De mesma forma que utilizamos a função COUNT neste cenário, podemos utilizar outras funções de agregação para estabelecer filtros na clausula HAVING.

Anúncios

4 pensamentos sobre “Como recuperar registros duplicados com SQL

    • Perda de desempenho sempre haverá, pois estamos falando de GROUP BY ou DISTINCT, mas ela será bem reduzida se houver índices adequado. Se tiver índices, para uma massa de dados com alguns milhões de registros, o segundo componente de desempenho será o tempdb, que requer outras estratégias, mas não sei se uma preocupação para isso se aplica, pois não vejo esta verificação como algo a ser feito todo momento em um sistema com muito dados.

  1. E como trazer somente os dados duplicados???? Não o número de vezes que eles duplicam, e sim os dados para gerar um relatório.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s