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