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

Find dublerede rækker i databasen

Dette burde virke på stort set alle 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 vil dog give dig et resultatsæt som dette:

Smith     Jack
Smith     Joe
Smith     Anna
Sixpack   Joe
Sixpack   Eve

Den mest elegante løsning til at vise dette i det ønskede format IMO er blot at omarrangere resultatsættet programmatisk i klientapplikationen i stedet for at trække alle mulige obskure SQL-stunts; noget i stil med (pseudokode):

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


  1. MYSQL Bestil fra et andet bord

  2. PHP-script json_encode mysql-anmodning kan ikke passere til getJSON()

  3. Jeg får mange udvalgte @@session.tx_read_only, ville man gøre det samme?

  4. PDO + MySQL og brudt UTF-8-kodning