sql >> Base de Datos >  >> RDS >> Oracle

Encuentra filas duplicadas en la base de datos

Esto debería funcionar en casi todos los dialectos de SQL:

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

Sin embargo, le dará un conjunto de resultados como este:

Smith     Jack
Smith     Joe
Smith     Anna
Sixpack   Joe
Sixpack   Eve

La solución más elegante para mostrar esto en el formato deseado, en mi opinión, es simplemente reorganizar el conjunto de resultados mediante programación en la aplicación cliente en lugar de extraer todo tipo de trucos oscuros de SQL; 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