Qual é a instrução SQL mais simples que retornará os valores duplicados para uma determinada coluna e a contagem de ocorrências em uma tabela de banco de dados Oracle?
Por exemplo: eu tenho uma JOBS
tabela com a coluna JOB_NUMBER
. Como posso descobrir se tenho duplicados se JOB_NUMBER
quantas vezes eles são duplicados?
sql
oracle
duplicate-data
Andrew
fonte
fonte
Respostas:
fonte
group by
, tal como em:select column_one, column_two, count(*) from tablename group by column_one, column_two having count(column_one) > 1;
etchaving count(*) > 1
: DOutra maneira:
Funciona bem (rápido o suficiente) quando o índice está ativado
column_name
. E é a melhor maneira de excluir ou atualizar linhas duplicadas.fonte
Mais simples que consigo pensar:
fonte
Você nem precisa ter a contagem nas colunas retornadas se não precisar saber o número real de duplicatas. por exemplo
fonte
E se:
Para responder o exemplo acima, seria semelhante a:
fonte
No caso de várias colunas identificarem uma linha exclusiva (por exemplo, tabela de relações), você poderá usar as seguintes
Use o ID da linha, por exemplo, emp_dept (empid, deptid, startdate, enddate) suponha que empid e deptid sejam exclusivos e identifiquem a linha nesse caso
e se essa tabela tiver chave primária, use chave primária em vez de rowid, por exemplo, id é pk,
fonte
Fazendo
fornecerá os IDs das linhas duplicadas.
fonte
fonte
Eu costumo usar a função Oracle Analytic ROW_NUMBER () .
Digamos que você queira verificar as duplicatas que você tem sobre um índice exclusivo ou chave primária construído sobre colunas (
c1
,c2
,c3
). Então você seguirá esse caminho, exibindoROWID
s de linhas onde o número de linhas trazidasROW_NUMBER()
é>1
:fonte
Aqui está uma solicitação SQL para fazer isso:
fonte
Eu sei que é um tópico antigo, mas isso pode ajudar alguém.
Se você precisar imprimir outras colunas da tabela enquanto verifica o uso duplicado abaixo:
também pode adicionar alguns filtros adicionais na cláusula where, se necessário.
fonte
1. solução
fonte
Também você pode tentar algo assim para listar todos os valores duplicados em uma tabela, digamos reqitem
fonte