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

  1. 1
    Identifica los registros duplicados. 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. 3
    Identifícalos a través de la columna llamada "Nombres". Por ejemplo, si tuvieras una columna llamada "Nombres", deberás reemplazar "nombre_columna" por "Nombres".
  4. 4
  5. 5
    Identifícalos a través de otras columnas. 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

  1. 1
    Usa la sentencia SELECT nombre FROM nombres. Después de SQL, que quiere decir "Standard Query Language" (lenguaje estandarizado de consultas), escribe SELECT nombre FROM nombres.
  2. 2
  3. 3
    Elimina todas las filas que contienen el nombre duplicado. Después de SQL, escribe la sentencia DELETE FROM nombres WHERE nombre='Alan'.[1]
  4. 4
  5. 5
    Ingresa nuevamente la fila, ahora sin el duplicado. 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. 7
    Observa la nueva lista. 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

  1. 1
    Selecciona el RowID que quieras eliminar. Después de SQL, escribe SELECT ROWID, nombre FROM nombres;.
  2. 2
    Elimina los registros duplicados. 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. 4
    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.
    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

  1. 1
    Selecciona las filas. Después de SQL, escribe SELECT * FROM nombres; para ver las filas.
  2. 2
    Elimina las filas duplicadas identificándolas a través de sus columnas. 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

Personal de wikiHow
Coescrito por:
wikiHow Staff Writer
Nuestro equipo de editores e investigadores capacitados han sido autores de este artículo y lo han validado por su precisión y amplitud.

wikiHow's Content Management Team revisa cuidadosamente el trabajo de nuestro personal editorial para asegurar que cada artículo cumpla con nuestros altos estándares de calidad. Este artículo ha sido visto 62 424 veces.
Categorías: Programación
Anuncio