sql >> Database >  >> RDS >> Oracle

Oracle Insert Select met bestellen door

Het gebruik van een ORDER BY binnen een INSERT SELECT is niet zinloos zolang het de inhoud van de ingevoegde gegevens kan veranderen, d.w.z. met een reeks NEXTVAL opgenomen in de SELECT clausule. En dit zelfs als de ingevoegde rijen niet worden gesorteerd wanneer ze worden opgehaald - dat is de rol van uw ORDER BY clausule in uw SELECT clausule bij het openen van de rijen.

Voor een dergelijk doel kunt u een tijdelijke oplossing gebruiken door uw ORDER BY . te plaatsen clausule in een subquery , en het werkt:

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


  1. Getallen opmaken in Oracle

  2. SQL rekenkundige operatoren

  3. Verschillende CURRENT_TIMESTAMP en SYSDATE in orakel

  4. Hoe kan ik dubbele opeenvolgende waarden in deze tabel vinden?