PDF download Descargar el PDF PDF download Descargar el PDF

Cuando trabajas con Oracle, a menudo pueden aparecer registros duplicados. Puedes eliminar estas filas duplicadas identificándolas y usando su propio RowID (identificador de fila) o la dirección de la fila. Antes de comenzar, debes crear una copia de seguridad de la tabla por si necesitas revisarla después de haber eliminado los registros.

Método 1
Método 1 de 4:

Identificar los registros duplicados

PDF download Descargar el PDF
  1. En este caso, se identificará el caso "Alan" que aparece dos veces en la tabla. Asegúrate de que los registros que vas a intentar eliminar sean realmente duplicados usando la siguiente sentencia SQL.
  2. 2
  3. Por ejemplo, si tuvieras una columna llamada "Nombres", deberás reemplazar "nombre_columna" por "Nombres".
  4. 4
  5. Si vas a intentar identificar los duplicados a través de otra columna diferente, por ejemplo, mirando la edad de Alan en vez de su nombre, ingresa "Edades" en lugar de "nombre_columna" y así sucesivamente.
     select 
     nombre_columna 
     , 
     count 
     ( 
     nombre_columna 
     ) 
     from 
     table 
     group 
     by 
     nombre_columna 
     having 
     count 
     ( 
     nombre_columna 
     ) 
     > 
     1 
     ; 
    
    Anuncio
Método 2
Método 2 de 4:

Eliminar un solo valor duplicado

PDF download Descargar el PDF
  1. Después de SQL , que quiere decir "Standard Query Language" (lenguaje estandarizado de consultas), escribe SELECT nombre FROM nombres .
  2. 2
  3. Después de SQL , escribe la sentencia DELETE FROM nombres WHERE nombre='Alan' . [1]
  4. 4
  5. Ahora que eliminaste todas las filas que tienen el nombre de ejemplo "Alan", debes insertar nuevamente otra a través de la sentencia INSERT INTO nombres VALUES ('Alan'); . Después de SQL , escribe COMMIT para crear la nueva columna.
  6. 6
  7. Una vez que hayas completado los pasos anteriores, puedes revisar la tabla para asegurarte de que no queden registros duplicados a través de la sentencia SELECT * FROM nombres .
     SQL 
     > 
     select 
     nombre 
     from 
     nombres 
     ; 
     NOMBRE 
     
    Alan Carrie Tom Alan rows selected . SQL > delete from nombres where nombre = 'Alan' ; rows deleted . SQL > commit ; Commit complete . SQL > insert into nombres values ( 'Alan' ); row created . SQL > commit ; Commit complete . SQL > select * from nombres ; NOMBRE
    Alan Carrie Tom rows selected .
    Anuncio
Método 3
Método 3 de 4:

Eliminar múltiples registros

PDF download Descargar el PDF
  1. Después de SQL , escribe SELECT ROWID, nombre FROM nombres; .
  2. Después de SQL , escribe DELETE FROM nombres a WHERE ROWID > (SELECT MIN(ROWID) FROM nombres b WHERE b.nombre=a.nombre); para eliminar los registros duplicados. [2]
  3. 3
  4. Después de haber completado los pasos anteriores, revisa si todavía hay registros duplicados escribiendo SELECT ROWID,nombre FROM nombres; y luego COMMIT .
     SQL 
     > 
     select 
     rowid 
     , 
     nombre 
     from 
     nombres 
     ; 
     ROWID 
     NOMBRE 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAB 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     AABJnsAAGAAAdfOAAF 
     Alan 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     nombres 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     nombres 
     b 
     where 
     b 
     . 
     nombre 
     = 
     a 
     . 
     nombre 
     ); 
     rows 
     deleted 
     . 
     SQL 
     > 
     select 
     rowid 
     , 
     nombre 
     from 
     nombres 
     ; 
     ROWID 
     NOMBRE 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    Anuncio
Método 4
Método 4 de 4:

Eliminar filas a través de las columnas

PDF download Descargar el PDF
  1. Después de SQL , escribe SELECT * FROM nombres; para ver las filas.
  2. Después de SQL , escribe DELETE FROM nombres a WHERE ROWID > (SELECT MIN(ROWID) FROM nombres b WHERE b.nombre=a.nombre AND b.edad=a.edad); para eliminar los registros duplicados. [3]
  3. 3
    Revisa si hay duplicados. Después de haber completado los pasos anteriores, revisa si todavía hay registros duplicados escribiendo SELECT ROWID,nombre FROM nombres; y luego COMMIT para comprobar que se hayan eliminado exitosamente los registros duplicados.
     SQL 
     > 
     select 
     * 
     from 
     nombres 
     ; 
     NOMBRE 
     EDAD 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     Alan 
     50 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     nombres 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     nombres 
     b 
     where 
     b 
     . 
     nombre 
     = 
     a 
     . 
     nombre 
     and 
     b 
     . 
     age 
     = 
     a 
     . 
     age 
     ); 
     row 
     deleted 
     . 
     SQL 
     > 
     select 
     * 
     from 
     nombres 
     ; 
     NOMBRE 
     EDAD 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    Anuncio

Advertencias

  • Crea una copia de seguridad de tu tabla en tu sesión y úsala para ver cuáles eran los datos de la tabla original antes de eliminar los duplicados (si tienes alguna duda).
     SQL 
     > 
     create 
     table 
     alan 
     . 
     names_backup 
     as 
     select 
     * 
     from 
     nombres 
     ; 
     Table 
     created 
     . 
    
Anuncio

Acerca de este wikiHow

Esta página ha recibido 75 576 visitas.

¿Te ayudó este artículo?

Anuncio