Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Encontrar linhas duplicadas no banco de dados


Isso deve funcionar em praticamente todos os dialetos SQL:
SELECT last_name, first_name FROM names
WHERE last_name IN (
    SELECT last_name FROM names GROUP BY last_name HAVING COUNT(*) > 1
)

No entanto, ele fornecerá um conjunto de resultados como este:
Smith     Jack
Smith     Joe
Smith     Anna
Sixpack   Joe
Sixpack   Eve

A solução mais elegante para exibir isso no formato desejado IMO é apenas reorganizar o conjunto de resultados programaticamente no aplicativo cliente, em vez de puxar todos os tipos de truques SQL obscuros; algo como (pseudocódigo):
for each row in resultset
   if row[last_name] <> previous_last_name
      print newline, print last_name
   print ' '
   print first_name