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

Oracle Insert Select con orden por

El uso de un ORDER BY dentro de un INSERT SELECT no tiene sentido siempre que pueda cambiar el contenido de los datos insertados, es decir, con una secuencia NEXTVAL incluido en el SELECT cláusula. Y esto, incluso si las filas insertadas no se ordenan cuando se recuperan, esa es la función de su ORDER BY cláusula en su SELECT cláusula al acceder a las filas.

Para tal objetivo, puede usar una solución alternativa colocando su ORDER BY cláusula en una subconsulta , y funciona:

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