sql >> Databáze >  >> RDS >> Oracle

Najděte duplicitní řádky v databázi

To by mělo fungovat téměř v každém dialektu SQL:

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

Získáte však sadu výsledků, jako je tato:

Smith     Jack
Smith     Joe
Smith     Anna
Sixpack   Joe
Sixpack   Eve

Nejelegantnějším řešením, jak to zobrazit v požadovaném formátu, je IMO jen přeuspořádat sadu výsledků programově v klientské aplikaci namísto vytahování nejrůznějších obskurních SQL triků; něco jako (pseudokód):

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


  1. Oracle SQL:Jak používat více než 1000 položek uvnitř klauzule IN

  2. MySql:jak vytvořit poddotaz a spočítat všechny řádky, kde je id stejné, ve dvou tabulkách

  3. Jak umožníte zákazníkům přihlásit se na vaše stránky pomocí jejich účtu Google?

  4. Strategie ukládání do mezipaměti, kdy se ukládání do mezipaměti stává zbytečným?