Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle Insert Select avec ordre par

L'utilisation d'un ORDER BY dans un INSERT SELECT n'est pas inutile tant qu'il peut changer le contenu des données insérées, c'est-à-dire avec une séquence NEXTVAL inclus dans le SELECT clause. Et ceci même si les lignes insérées ne seront pas triées lors de la récupération - c'est le rôle de votre ORDER BY clause dans votre SELECT clause lors de l'accès aux lignes.

Pour un tel objectif, vous pouvez utiliser une solution de contournement en plaçant votre ORDER BY clause dans une sous-requête , et ça marche :

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