Buscar registros duplicados en ORACLE
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
No hay comentarios:
Publicar un comentario