sql >> Base de Datos >  >> RDS >> Oracle

Oracle:por qué no puedo confiar en ROWNUM en una cláusula de eliminación

Esto se debe a que ROWNUM es una pseudocolumna, lo que implica que no existen físicamente. Puedes usar mejor rowid para eliminar los registros.

Para eliminar los duplicados puedes probar así:

DELETE FROM mytable a
WHERE EXISTS( SELECT 1 FROM mytable b
              WHERE a.id = b.id
              AND a.name = b.name
              AND a.rowid > b.rowid )