Ir para o conteúdo principal

SQL - Descobrir se existem registros duplicados

Neste conteúdo vamos mostrar como verificar se existe registros duplicados no banco. Neste exemplo vamos mostrar como fazer na tabela CRM_PROCEDIMENTO_FORMULARIOS, porém o mesmo pode ser adaptado para qualquer outra tabela.

select cpa.idprocedimento, 
       cpa.idatividade, 
       cpa.idversao,
       idformulario, 
       count(cpa.idprocedimento)
from crm_procedimento_formulario cpa
group by  cpa.idprocedimento, 
          cpa.idatividade, 
          cpa.idversao,idformulario
having  count(cpa.idprocedimento)>=2

Retorno da consulta: 

image-1640005153780.png

O count mostra quantos registro tem idênticos. Agora para descobrir quais registro são basta executar o seguinte SQL:

select * 
from (select *
      from crm_procedimento_formulario 
      where idprocedimento = 24 
      and idatividade = 2 
      and idversao = 1 
      and idformulario = 1)
where rownum < 3

Obs: o comando rownum varia conforme a quantidade for retornada. Neste exemplo como os filtros que colocamos ele retorno que havia 3 registros iguais o rownum fica " < 3" .

Retorno da consulta: 

image-1640005294965.png