Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Afficher toutes les lignes dupliquées

Vous avez trouvé vos enregistrements en double, mais vous souhaitez obtenir toutes les informations qui s'y rattachent. Vous devez join vos doublons à votre table principale pour obtenir ces informations.

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

C'est la même chose qu'une inner join et signifie que pour chaque enregistrement de votre sous-requête, qui a trouvé les enregistrements en double, vous trouvez tout dans votre table principale qui a la même combinaison première et dernière vue.

Vous pouvez également le faire avec in, bien que vous devriez tester la différence :

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

Autres lectures :