Como posso identificar registros duplicados em uma tabela?
Como posso identificar registros duplicados em uma tabela?
Para identificar registros duplicados em uma tabela, você vai usar o GROUP BY cláusula da instrução SELECT. Vamos criar a tabela e inserir os dados para que possamos ver como fazer. Sua instrução SQL ficará da seguinte forma:
CRIANDO TABELA E INSERINDO OS DADOS:
CREATE TABLE T_REGISTRODUPLICADO ( CODIGO INT NOT NULL, DESCRICAO VARCHAR(50) ); INSERT INTO T_REGISTRODUPLICADO (CODIGO,DESCRICAO) VALUES (1, 'REGISTRO 1'); INSERT INTO T_REGISTRODUPLICADO (CODIGO,DESCRICAO) VALUES (2, 'REGISTRO 2'); INSERT INTO T_REGISTRODUPLICADO (CODIGO,DESCRICAO) VALUES (3, 'REGISTRO 3'); INSERT INTO T_REGISTRODUPLICADO (CODIGO,DESCRICAO) VALUES (1, 'REGISTRO 1'); INSERT INTO T_REGISTRODUPLICADO (CODIGO,DESCRICAO) VALUES (1, 'REGISTRO 1'); INSERT INTO T_REGISTRODUPLICADO (CODIGO,DESCRICAO) VALUES (1, 'REGISTRO 1');
Como ver os registros duplicados:
SELECT CODIGO, DESCRICAO FROM T_REGISTRODUPLICADO GROUP BY CODIGO, DESCRICAO HAVING COUNT(*)>1
Esta consulta irá lhe retornar os registros duplicados com base no código e descrição. Se você quer saber quantas vezes esses registros são duplicados na tabela, você pode simplesmente incluir o COUNT (*) na saída:
SELECT CODIGO, DESCRICAO, COUNT(*) FROM T_REGISTRODUPLICADO GROUP BY CODIGO, DESCRICAO HAVING COUNT(*)>1
Se você quer o resultado ordenado pela combinação mais duplicado do código e descrição, você pode incluir a cláusula ORDER BY da seguinte forma:
SELECT CODIGO, DESCRICAO, COUNT(*) FROM T_REGISTRODUPLICADO GROUP BY CODIGO, DESCRICAO HAVING COUNT(*)>1 ORDER BY COUNT(*) DESC
Faça o download do arquivo de exemplo clicando no link: registrosduplicados
Comentários: 1
Excelente artigo.
Abraço