sql >> Databasteknik >  >> RDS >> Oracle

Hitta dubbletter av rader i databasen

Detta borde fungera på i stort sett alla SQL-dialekter:

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

Det kommer dock att ge dig en resultatuppsättning så här:

Smith     Jack
Smith     Joe
Smith     Anna
Sixpack   Joe
Sixpack   Eve

Den mest eleganta lösningen för att visa detta i det önskade formatet IMO är att bara omarrangera resultatuppsättningen programmatiskt i klientapplikationen istället för att göra alla möjliga oklara SQL-stunts; något som (pseudokod):

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


  1. Webbplatsen har hackats via SQL Injection

  2. Konvertera ett heltal till Enum i PostgreSQL

  3. skapa en miljontabell i en databas?

  4. Skapa och köra sql-kommandon dynamiskt i Oracle