Mientras trabaja en Oracle, puede encontrar duplicados en algunos registros. Puede eliminar filas duplicadas identificándolas y utilizando la dirección de fila de alias de RowID correspondiente. Antes de comenzar, cree una tabla de respaldo en caso de que necesite una referencia después de que se elimine el registro.
Paso
Método 1 de 4: identificación de duplicados
Paso 1. Identifique los duplicados
En este ejemplo, identificamos el "Alan" duplicado. Asegúrese de que los registros que se eliminarán sean realmente duplicados ingresando el SQL a continuación.
Paso 2. Identifíquese de la columna titulada "Nombre"
En caso de que la columna tenga el título "Nombre", debe reemplazar "nombre_columna" por Nombre.
Paso 3. Identifique las otras columnas
Si está intentando identificar duplicados de diferentes columnas, por ejemplo, la edad de Alan en lugar de su nombre, ingrese "Edad" en lugar de "nombre_columna" 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: Eliminación de duplicados únicos
Paso 1. Seleccione "nombre de nombres"
Después de "SQL" (abreviatura de Standard Query Language), ingrese "seleccione el nombre de los nombres".
Paso 2. Elimine todas las filas con nombres duplicados
Después de "SQL", ingrese "eliminar de nombres donde name = 'Alan';." Cabe señalar que las mayúsculas son importantes aquí para que este paso pueda eliminar todas las líneas llamadas "Alan". Después de "SQL", ingrese "confirmar"
Paso 3. Vuelva a ingresar filas sin duplicados
Ahora que eliminó todas las filas y las reemplazó con "Alan", complete una de nuevo ingresando "insertar en los valores de nombre ('Alan');." Después de "SQL", ingrese "confirmar" para crear una nueva línea.
Paso 4. Vea la nueva lista
Después de completar los pasos anteriores, puede verificar para asegurarse de que no haya más registros duplicados ingresando "seleccionar * de nombres".
SQL> seleccione el nombre de los nombres; NOMBRE ------------------------------ Alan Citra Tomi Alan Baris seleccionado. SQL> eliminar de nombres donde name = 'Alan'; La línea se elimina. SQL> confirma; / Confirmación completa. SQL> insertar en valores de nombres ('Alan'); fila creada. SQL> confirma; Confirmación completa. SQL> seleccionar * de nombres; NOMBRE ------------------------------ Alan Citra Tomi filas seleccionadas.
Método 3 de 4: eliminación de varios duplicados
Paso 1. Seleccione el RowID que desea eliminar
Después de "SQL", ingrese "select rowid, name from names;."
Paso 2. Elimine los duplicados
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 duplicados.
Paso 3. Compruebe si hay duplicados
Después de completar los pasos anteriores, verifique si hay duplicados ingresando "select rowid, name from names;" luego "comprometerse".
SQL> seleccionar rowid, nombre de los nombres; NOMBRE 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 ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom filas seleccionadas. SQL> confirma; Confirmación completa.
Método 4 de 4: eliminar filas por columnas
Paso 1. Seleccione la fila
Después de "SQL", ingrese "seleccionar * de los nombres"; para poder ver la línea.
Paso 2. Elimine filas duplicadas identificando sus columnas
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 registros duplicados.
Paso 3. Compruebe si hay duplicados
Una vez que haya completado los pasos anteriores, ingrese "seleccionar * de los nombres"; luego "confirmar" para ver si los duplicados realmente se han eliminado.
SQL> seleccionar * de nombres; NOMBRE EDAD ------------------------------ ---------- Alan 50 Citra 51 Tomi 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 Citra 51 Tomi 52 filas seleccionadas. SQL> confirma; Confirmación completa.
Advertencia
-
Cree una tabla duplicada en su inicio de sesión para que pueda usarse como referencia de contenido cuando no se haya eliminado ningún dato (en caso de que tenga alguna pregunta).
SQL> crear tabla alan.names_backup como seleccionar * de nombres; Mesa creada.