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

Oracle Insert Select mit Sortierung nach

Die Verwendung eines ORDER BY innerhalb eines INSERT SELECT ist nicht sinnlos solange es den Inhalt der eingefügten Daten ändern kann, d. h. mit einer Sequenz NEXTVAL in SELECT enthalten Klausel. Und das auch dann, wenn die eingefügten Zeilen beim Abrufen nicht sortiert werden - das ist die Aufgabe Ihres ORDER BY -Klausel in Ihrem SELECT -Klausel beim Zugriff auf die Zeilen.

Für ein solches Ziel können Sie eine Problemumgehung verwenden, indem Sie Ihren ORDER BY eingeben -Klausel in einer Unterabfrage , und es funktioniert:

INSERT INTO myTargetTable
(
  SELECT mySequence.nextval, sq.* FROM
    (   SELECT f1, f2, f3, ...fx 
          FROM mySourceTable
         WHERE myCondition
      ORDER BY mySortClause
    ) sq
)