Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Mostra tutte le righe duplicate

Hai trovato i tuoi record duplicati ma sei interessato a ottenere tutte le informazioni ad essi allegate. Devi join i tuoi duplicati nella tabella principale per ottenere tali informazioni.

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

È lo stesso di un inner join e significa che per ogni record nella tua sottoquery, che ha trovato i record duplicati, trovi tutto dalla tua tabella principale che ha la stessa combinazione primo visto e ultimo visto.

Puoi farlo anche con in, anche se dovresti testare la differenza :

select *
  from my_table a
 where ( firstname, lastname ) in   
       ( select firstname, lastname 
           from my_table 
          group by firstname, lastname 
         having count(*) > 1 )

Ulteriori letture: