Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Alle duplizierten Zeilen anzeigen

Sie haben Ihre duplizierten Datensätze gefunden, möchten aber alle ihnen angehängten Informationen erhalten. Sie müssen join Ihre Duplikate zu Ihrer Haupttabelle, um diese Informationen zu erhalten.

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

Dies ist dasselbe wie ein inner join und bedeutet, dass Sie für jeden Datensatz in Ihrer Unterabfrage, der die doppelten Datensätze gefunden hat, alles aus Ihrer Haupttabelle finden, das dieselbe Firstseen- und Lastseen-Kombination aufweist.

Sie können dies auch mit in tun, obwohl Sie den Unterschied testen sollten :

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

Weiterführende Literatur: