Oracle

Registros duplicados en Oracle

Como suele pasar, se me olvido crear la llave primaria para una tabla, resultando que se insertaran registros duplicados en ella, ahora, ¿Cómo los elimino? Muy fácil, encontré, rascándole a google, una instrucción estándar para borrar registros duplicados:

1
2
3
4
5
DELETE FROM tabla
 WHERE ROWID NOT IN
            (SELECT MIN(ROWID)
               FROM tabla
              GROUP BY columna1, columna2, columna3...);

Donde por supuesto “tabla” es el nombre de la tabla y “columna1″, “columna2″, etc. Es la llave que identifica a cada registro.

24 thoughts on “Registros duplicados en Oracle

  1. Hola, necesito ayuda sobre este tema, tango una tambla con tres campos A B C y necesito encontrar donde se duplican los tres por ejemplo encontrar las filas 1 y 3, que estan repetidas
    A B C
    ——————–
    123 cdsx a126d
    124 ghff d188f
    123 cdsx a126d

  2. Que bien, tenía tiempo buscando un modo de seleccionar solo una fila de los registros duplicados. Había probado utilizando having count pero este te lista todas las filas. Este script es mucho mejor. Muchas gracias 😀

  3. No se necesita el having count que propone Tales Klein, puesto que el “not in” excluye los registros no duplicados que se asimilan al mínimo.

Responder a jessi Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *