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:
[sourcecode language=”sql”]
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’);
[/sourcecode]
Como ver os registros duplicados:
[sourcecode language=”sql”]
SELECT CODIGO, DESCRICAO FROM T_REGISTRODUPLICADO
GROUP BY CODIGO, DESCRICAO
HAVING COUNT(*)>1
[/sourcecode]
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:
[sourcecode language=”sql”]
SELECT CODIGO, DESCRICAO, COUNT(*) FROM T_REGISTRODUPLICADO
GROUP BY CODIGO, DESCRICAO
HAVING COUNT(*)>1
[/sourcecode]
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:
[sourcecode language=”sql”]
SELECT CODIGO, DESCRICAO, COUNT(*) FROM T_REGISTRODUPLICADO
GROUP BY CODIGO, DESCRICAO
HAVING COUNT(*)>1
ORDER BY COUNT(*) DESC
[/sourcecode]
Faça o download do arquivo de exemplo clicando no link: registrosduplicados
Excelente artigo.
Abraço