Verificar registro duplicado e listá-los com Oracle
Fala galera!
Quero verificar duplicidade em uma tabela e trazer esses registros. Quero listá-los.
Para verificar a duplicidades, fiz assim:
SELECT NOME_PESSOA, COUNT(*) AS QTD_REGISTRO_DUPLICADO
FROM PESSOA GROUP BY NOME_PESSOA HAVING COUNT(*)>1COPIAR CÓDIGO
Esse select me traz o nome da pessoa e a quantidade de vezes que o registro aparece. Ex.:
Flávia 2
Aline 4
.
.
.
Preciso agora trazer essas informações listadas, para que possa decidir qual registro será excluído. Não tenho ideia de como fazer.
Pensei em criar uma tabela temporária para armazenar o conteúdo do primeiro select. E depois fazer um select com join da tabela temporária com a tabela PESSOA.
Mas queria uma ajuda, não sei se é a melhor opção.
Desde já, agradeço a colaboração de todos!
Quero verificar duplicidade em uma tabela e trazer esses registros. Quero listá-los.
Para verificar a duplicidades, fiz assim:
SELECT NOME_PESSOA, COUNT(*) AS QTD_REGISTRO_DUPLICADO
FROM PESSOA GROUP BY NOME_PESSOA HAVING COUNT(*)>1COPIAR CÓDIGO
Esse select me traz o nome da pessoa e a quantidade de vezes que o registro aparece. Ex.:
Flávia 2
Aline 4
.
.
.
Preciso agora trazer essas informações listadas, para que possa decidir qual registro será excluído. Não tenho ideia de como fazer.
Pensei em criar uma tabela temporária para armazenar o conteúdo do primeiro select. E depois fazer um select com join da tabela temporária com a tabela PESSOA.
Mas queria uma ajuda, não sei se é a melhor opção.
Desde já, agradeço a colaboração de todos!
Flávia Santos
Curtidas 0
Melhor post
Emerson Nascimento
17/05/2022
tente assim:
para melhor performance seria bom ter um índice pelo campo NOME_PESSOA na tabela PESSOA
SELECT * FROM PESSOA WHERE NOME_PESSOA IN ( SELECT NOME_PESSOA FROM PESSOA GROUP BY NOME_PESSOA HAVING COUNT(*) > 1 )
GOSTEI 1
Mais Respostas
Jair N.
16/05/2022
Bom Dia, não entendi a sua dificuldade de avaliação!
1º) A sua consulta está perfeita, vai trazer os dados que estão duplicados, se for no caso, a questão de uma visualização ou gerar tabela dá na mesma, até que a sua necessidade seja conclusiva para listar ou assinalar qual dos dados deverá permanecer no banco e quais serão excluídos? No caso o critério deverá ser por interferência humana? (já que nossas nossas mentes processa esse tipo de classificação de uma maneira rápida e criteriosa dependendo do indivíduo e seus conhecimentos).
2º) Uma outra alternativa é a exemplo: no cadastro de "pessoas" seria quais os registros que estão sendo mais utilizados em outras tabelas (a integridade referencial está permite ou não a substituição do registro selecionado?)
3º) Pode-se fazer um processamento de validação baseado a exemplo qual será o registro que está mais completo no cadastro, ou quais são os dados que estão realmente corretos, validando os documentos como CNP (J/F) , inscrições (E/M), nomes e razão e etc.
4º) Ou fazer uma grade gerada de críticas onde pode selecionar as opções que atende seus requisitos. Neste caso por interferência do usuário.
PS: Isto é só uma opção entre outras.
Atc.
1º) A sua consulta está perfeita, vai trazer os dados que estão duplicados, se for no caso, a questão de uma visualização ou gerar tabela dá na mesma, até que a sua necessidade seja conclusiva para listar ou assinalar qual dos dados deverá permanecer no banco e quais serão excluídos? No caso o critério deverá ser por interferência humana? (já que nossas nossas mentes processa esse tipo de classificação de uma maneira rápida e criteriosa dependendo do indivíduo e seus conhecimentos).
2º) Uma outra alternativa é a exemplo: no cadastro de "pessoas" seria quais os registros que estão sendo mais utilizados em outras tabelas (a integridade referencial está permite ou não a substituição do registro selecionado?)
3º) Pode-se fazer um processamento de validação baseado a exemplo qual será o registro que está mais completo no cadastro, ou quais são os dados que estão realmente corretos, validando os documentos como CNP (J/F) , inscrições (E/M), nomes e razão e etc.
4º) Ou fazer uma grade gerada de críticas onde pode selecionar as opções que atende seus requisitos. Neste caso por interferência do usuário.
PS: Isto é só uma opção entre outras.
Atc.
GOSTEI 0