Buscar registros duplicados en ORACLE.

Pues eso amig@s,

Para buscar registros duplicados en una tabla de oracle, con la siguiente consulta podremos saber cuantos registros hay duplicados por cada columna:

SELECT COL_A_COMPROBAR, COUNT(COL_A_COMPROBAR)
FROM NOMBRE_TABLA
GROUP BY COL_A_COMPROBAR
HAVING COUNT(COL_A_COMPROBAR) > 1

Tambien pueden añadir campos a la consulta para identificar mas los datos de las lineas duplicadas, solo basta con agregar las columnas separadas con una coma en el SELECT y luego respetar el orden en el group by (COL2, COL3, COL4):

SELECT COL_A_COMPROBAR, COUNT(COL_A_COMPROBAR), COL2, COL3, COL4
FROM NOMBRE_TABLA
GROUP BY COL_A_COMPROBAR,COL2, COL3, COL4
HAVING COUNT(COL_A_COMPROBAR) > 1

Añadido el 28/3/2012:

En caso de que tengamos espacios en blanco, las anteriores consultas no muestran resultados por que el valor a comprobar de la columna COL_A_COMPROBAR en el having es distinto por lo que lo considera otro registro y no encuentra la duplicidad. Para encontrar registris duplicados con espacios podemos utilizar el comando LTRIM o RTRIM segun de que lado estén los espacios (izquierda o derecha).

Espacios a la izquierda:

SELECT Ltrim (COL_A_COMPROBAR), COUNT(COL_A_COMPROBAR)


FROM NOMBRE_TABLA

GROUP BY Ltrim (COL_A_COMPROBAR)

HAVING COUNT (Ltrim (COL_A_COMPROBAR)) > 1
 
Espacios a la derecha:


SELECT Rtrim (COL_A_COMPROBAR), COUNT(COL_A_COMPROBAR)
FROM NOMBRE_TABLA
GROUP BY Rtrim (COL_A_COMPROBAR)
HAVING COUNT (Rtrim (COL_A_COMPROBAR)) > 1



Espero que les resulte util.

Salu2.

Share on Google Plus
    Blogger Comment

3 comentarios:

JHONNY AGUIRRE dijo...

Super útil estas sentencias.. Gracias por compartirlo.!!

Alex Fernando Florez Gutiérrez dijo...

Muchas gracias, me fue muy útil tu aporte.

Berthold Hanisch dijo...


I have read some just right stuff here. Certainly price bookmarking for revisiting. I wonder how so much attempt you place to create such a excellent informative web site. gmail log in