Oracle
 sql >> Database >  >> RDS >> Oracle

Trova le righe duplicate nel database

Questo dovrebbe funzionare praticamente su tutti i dialetti SQL:

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

Tuttavia, ti darà un set di risultati come questo:

Smith     Jack
Smith     Joe
Smith     Anna
Sixpack   Joe
Sixpack   Eve

La soluzione più elegante per visualizzare questo nel formato IMO desiderato è semplicemente riorganizzare il set di risultati a livello di codice nell'applicazione client invece di eseguire tutti i tipi di oscure acrobazie SQL; qualcosa come (pseudocodice):

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