Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle Insert Select com pedido por


O uso de um ORDER BY dentro de um INSERT SELECT é não é inútil desde que possa alterar o conteúdo dos dados inseridos, ou seja, com uma sequência NEXTVAL incluído no SELECT cláusula. E isso mesmo que as linhas inseridas não sejam classificadas quando buscadas - esse é o papel do seu ORDER BY cláusula em seu SELECT cláusula ao acessar as linhas.

Para esse objetivo, você pode usar uma solução alternativa colocando seu ORDER BY cláusula em uma subconsulta , e funciona:
INSERT INTO myTargetTable
(
  SELECT mySequence.nextval, sq.* FROM
    (   SELECT f1, f2, f3, ...fx 
          FROM mySourceTable
         WHERE myCondition
      ORDER BY mySortClause
    ) sq
)