Al trabajar en Oracle, es posible que algunos de sus registros tengan duplicados. Puede eliminar estas filas duplicadas identificándolas y utilizando su RowID, o dirección de fila. Antes de comenzar, debe crear una tabla de respaldo en caso de que necesite hacer referencia a ellos después de haber eliminado los registros.
Pasos
Método 1 de 4: identificación de su duplicado
Paso 1. Identifique el duplicado
En este caso, identifique el duplicado de ejemplo, "Alan". Asegúrese de que los registros que está intentando eliminar sean realmente duplicados ingresando el código SQL a continuación.
Paso 2. Identificación de una columna denominada "Nombres
"En el caso de una columna llamada" Nombres ", reemplazaría" nombre_columna "por Nombres.
Paso 3. Identificación de otras columnas
Si intenta identificar el duplicado mediante una columna diferente, por ejemplo, la edad de Alan en lugar de su nombre, debe ingresar "Edades" en el lugar de "column_name" y así sucesivamente.
seleccione column_name, count (column_name) del grupo de tablas por column_name teniendo count (column_name)> 1;
Método 2 de 4: eliminar un solo duplicado
Paso 1. Seleccione "nombre de los nombres
"Después de" SQL ", que significa Lenguaje de consulta estándar, ingrese" seleccione el nombre de los nombres ".
Paso 2. Elimine todas las filas con el nombre duplicado
Después de "SQL", ingrese "eliminar de los nombres donde name = 'Alan';." Tenga en cuenta que las mayúsculas son importantes aquí, por lo que esto eliminará todas las filas llamadas "Alan". Después de "SQL", ingrese "confirmar".
Paso 3. Vuelva a colocar la fila sin un duplicado
Ahora que ha eliminado todas las filas con el nombre de ejemplo "Alan", puede volver a insertar una ingresando "insertar en valores de nombre ('Alan');." Después de "SQL", ingrese "confirmar" para crear su nueva fila.
Paso 4. Vea su nueva lista
Una vez que haya completado los pasos anteriores, puede verificar para asegurarse de que ya no tiene registros duplicados ingresando "seleccionar * de nombres".
SQL> seleccione el nombre de los nombres; NOMBRE ------------------------------ Alan Carrie Tom Alan filas seleccionadas. SQL> eliminar de nombres donde name = 'Alan'; filas eliminadas. SQL> confirmar; Confirmación completa. SQL> insertar valores en nombres ('Alan'); fila creada. SQL> confirmar; Confirmación completa. SQL> seleccionar * de nombres; NOMBRE ------------------------------ Alan Carrie Tom filas seleccionadas.
Método 3 de 4: eliminar varios duplicados
Paso 1. Seleccione el RowID que desea eliminar
Después de "SQL", ingrese "seleccione ID de fila, nombre de nombres;"
Paso 2. Elimina el duplicado
Después de "SQL", ingrese "eliminar de los nombres a donde rowid> (seleccione min (rowid) de los nombres b donde b.name = a.name);" para eliminar registros duplicados.
Paso 3. Compruebe si hay duplicados
Una vez que haya completado lo anterior, los comandos verifican si todavía tiene registros duplicados ingresando "select rowid, name from names;" y luego "comprometerse".
SQL> seleccionar rowid, nombre de los nombres; NOMBRE DE ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan filas seleccionadas. SQL> eliminar de los nombres a donde rowid> (seleccione min (rowid) de los nombres b donde b.name = a.name); filas eliminadas. SQL> seleccionar rowid, nombre de los nombres; NOMBRE DE ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Filas de Tom seleccionadas. SQL> confirmar; Confirmación completa.
Método 4 de 4: eliminar filas con columnas
Paso 1. Seleccione sus filas
Después de "SQL", ingrese "seleccione * de los nombres"; para ver tus filas.
Paso 2. Elimine filas duplicadas identificando su columna
Después de "SQL '" ingrese "eliminar de los nombres a donde rowid> (seleccione min (rowid) de los nombres b donde b.name = a.name y b.age = a.age);" para eliminar los registros duplicados.
Paso 3. Compruebe si hay duplicados
Una vez que haya completado los pasos anteriores, ingrese "seleccionar * de los nombres"; y luego "confirmar" para comprobar que ha eliminado los registros duplicados correctamente.
SQL> seleccionar * de nombres; NOMBRE EDAD ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 filas seleccionadas. SQL> eliminar de los nombres a donde rowid> (seleccione min (rowid) de los nombres b donde b.name = a.name y b.age = a.age); fila eliminada. SQL> seleccionar * de nombres; NOMBRE EDAD ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 filas seleccionadas. SQL> confirmar; Confirmación completa.
Advertencias
-
Cree una tabla de respaldo en su propio inicio de sesión que pueda usar para mostrar lo que estaba allí antes de que ocurriera cualquier eliminación (en caso de que haya alguna pregunta).
SQL> crear tabla alan.names_backup como seleccionar * de nombres; Mesa creada.