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

Trouver les lignes en double dans la base de données

Cela devrait fonctionner sur à peu près tous les dialectes SQL :

SELECT last_name, first_name FROM names
WHERE last_name IN (
    SELECT last_name FROM names GROUP BY last_name HAVING COUNT(*) > 1
)

Cela vous donnera cependant un ensemble de résultats comme celui-ci :

Smith     Jack
Smith     Joe
Smith     Anna
Sixpack   Joe
Sixpack   Eve

La solution la plus élégante pour afficher cela dans le format souhaité IMO consiste simplement à réorganiser le jeu de résultats par programmation dans l'application cliente au lieu de tirer toutes sortes de cascades SQL obscures; quelque chose comme (pseudocode):

for each row in resultset
   if row[last_name] <> previous_last_name
      print newline, print last_name
   print ' '
   print first_name