Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle Inserisci Seleziona con ordina per

L'uso di un ORDER BY all'interno di un INSERT SELECT non ha senso purché possa modificare il contenuto dei dati inseriti, ovvero con una sequenza NEXTVAL incluso nel SELECT clausola. E questo anche se le righe inserite non verranno ordinate quando vengono recuperate, questo è il ruolo del tuo ORDER BY clausola nel tuo SELECT clausola durante l'accesso alle righe.

Per tale obiettivo, puoi utilizzare una soluzione alternativa inserendo il tuo ORDER BY clausola in una sottoquery , e funziona:

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