Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Mostrar todas as linhas duplicadas


Você encontrou seus registros duplicados, mas está interessado em obter todas as informações anexadas a eles. Você precisa join suas duplicatas para sua tabela principal para obter essas informações.
select *
  from my_table a
  join ( select firstname, lastname 
           from my_table 
          group by firstname, lastname 
         having count(*) > 1 ) b
    on a.firstname = b.firstname
   and a.lastname = b.lastname

Isso é o mesmo que uma inner join e significa que para cada registro em sua subconsulta, que encontrou os registros duplicados, você encontra tudo da sua tabela principal que tem a mesma combinação de primeira vista e última vista.

Você também pode fazer isso com embora você deva testar a diferença :
select *
  from my_table a
 where ( firstname, lastname ) in   
       ( select firstname, lastname 
           from my_table 
          group by firstname, lastname 
         having count(*) > 1 )

Leituras adicionais: