sql >> Database >  >> RDS >> Oracle

Vind dubbele rijen in database

Dit zou op vrijwel elk SQL-dialect moeten werken:

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

Het geeft je echter een resultatenset zoals deze:

Smith     Jack
Smith     Joe
Smith     Anna
Sixpack   Joe
Sixpack   Eve

De meest elegante oplossing om dit in het gewenste formaat IMO weer te geven, is om de resultatenset gewoon programmatisch opnieuw te rangschikken in de clienttoepassing in plaats van allerlei obscure SQL-stunts uit te halen; zoiets als (pseudocode):

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


  1. Een storing in de communicatieverbinding oplossen met JDBC en MySQL

  2. Parseer bestandsnaam en pad van volledig pad

  3. SQL - LOAD DATA INFILE - UTF8 probleem

  4. Sleutelwaardepaar verwijderen uit jsonb geneste array in postgresql