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.
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.
Pasos
Método 1
Método 1 de 4:Identificar los registros duplicados
-
1Identifica 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
-
3Identifí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
-
5Identifí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
-
1Usa 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
-
3Elimina todas las filas que contienen el nombre duplicado. Después de SQL, escribe la sentencia DELETE FROM nombres WHERE nombre='Alan'.[1]
-
4
-
5Ingresa 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
-
7Observa 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
-
1Selecciona el RowID que quieras eliminar. Después de SQL, escribe SELECT ROWID, nombre FROM nombres;.
-
2Elimina 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
-
4Revisa 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
-
1Selecciona las filas. Después de SQL, escribe SELECT * FROM nombres; para ver las filas.
-
2Elimina 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]
-
3Revisa 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.
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.