Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle:Warum ich mich in einer Löschklausel nicht auf ROWNUM verlassen kann

Dies liegt daran, dass ROWNUM eine Pseudospalte ist, was impliziert, dass sie physisch nicht existieren. Sie können besser rowid verwenden um die Aufzeichnungen zu löschen.

Um die Duplikate zu entfernen, können Sie Folgendes versuchen:

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 )