Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Finden Sie doppelte Zeilen in der Datenbank

Dies sollte auf so ziemlich jedem SQL-Dialekt funktionieren:

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

Es wird Ihnen jedoch eine Ergebnismenge wie diese geben:

Smith     Jack
Smith     Joe
Smith     Anna
Sixpack   Joe
Sixpack   Eve

Die eleganteste Lösung, um dies im gewünschten Format anzuzeigen, besteht meines Erachtens darin, die Ergebnismenge einfach programmgesteuert in der Clientanwendung neu anzuordnen, anstatt alle möglichen obskuren SQL-Stunts durchzuführen. so etwas wie (Pseudocode):

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