¿Cómo eliminar registros duplicados en la base de datos Oracle?

Para eliminar los registros duplicados, primero debemos encontrar todos los registros distintos. En los registros duplicados, todos los datos son iguales excepto id_fila porque id_fila es la dirección física que ocupa el registro. Entonces, encontramos la identificación de fila distinta donde los datos son distintos en cada columna y luego eliminamos todas las filas con row_id que no están en la consulta anterior.

Aquí veremos cómo eliminar registros duplicados en Oracle. Para este propósito de demostración, crearemos una demostración de tabla.

Crear base de datos:

En primer lugar, creamos una tabla y completamos los datos en ella, con algunos registros duplicados usando:

Consulta:

CREATE TABLE Demo( PersonID int, LastName varchar(255), FirstName varchar(255));
INSERT INTO Demo VALUES (1, 'Geek1', 'Geeksforgeeks');
INSERT INTO Demo VALUES (2, 'Geek2', 'Geeksforgeeks');
INSERT INTO Demo VALUES (3, 'Geek3', 'Geeksforgeeks');
INSERT INTO Demo VALUES (1, 'Geek1', 'Geeksforgeeks');
INSERT INTO Demo VALUES (2, 'Geek2', 'Geeksforgeeks');
INSERT INTO Demo VALUES (2, 'Geek2', 'Geeksforgeeks');

Producción:

Ahora, encontraremos todos los registros distintos que no tengan una fila duplicada usando:

Consulta:

SELECT * FROM Demo 
WHERE rowid IN 
( SELECT MAX(rowid)  
FROM Demo
GROUP BY PersonID, LastName, FirstName);

Producción:

Ahora. elimine todas las filas con ID de fila que no están en la consulta anterior usando:

Consulta:

DELETE Demo  
WHERE rowid NOT IN 
  (SELECT MAX(rowid)  
FROM Demo
GROUP BY PersonID, LastName, FirstName);

Producción:

La tabla final con los duplicados eliminados es la siguiente:

Publicación traducida automáticamente

Artículo escrito por mishrapriyank17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *