Caba da TI

Caba da TI

Como encontrar linhas duplicadas em uma tabela no Oracle

Muitas vezes temos a necessidade de descobrir se uma tabela possui linhas duplicadas e inclusive em algumas vezes queremos saber se existem linhas duplicadas levando em consideração apenas algumas colunas. Segue abaixo script para descobrir linhas duplicadas em uma tabela no Oracle.

Dados utilizados nos exemplos: tabela “clientes”

Exemplo 1: procurar linhas duplicadas utilizando todas as colunas

SELECT  * 
FROM    ( 
SELECT  cli.*, ROW_NUMBER() OVER (PARTITION BY cli.id_cliente, cli.nome, cli.idade ORDER BY cli.id_cliente) AS rn 
FROM    clientes cli 
) 
WHERE   rn > 1

Como não há nenhuma linha que contenha todas as colunas iguais a outra linha (já que a coluna ID_CLIENTE sempre será diferente), a consulta não trouxe nenhum resultado.

Exemplo 2: procurar linhas duplicadas utilizando colunas específicas

SELECT  * 
FROM    ( 
SELECT  cli.*, ROW_NUMBER() OVER (PARTITION BY cli.nome, cli.idade ORDER BY cli.id_cliente) AS rn 
FROM    clientes cli 
) 
WHERE   rn > 1

Nesse caso a consulta está retornando uma linha, o que significa que há uma duplicação para o nome “joão” com idade “40”.

Referências

How to Find Duplicate Records in Oracle

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *