Użycie ORDER BY
wewnątrz INSERT SELECT
jest nie bezcelowe o ile może zmienić zawartość wstawianych danych, np. sekwencją NEXTVAL
zawarte w SELECT
klauzula. I to nawet jeśli wstawione wiersze nie będą posortowane podczas pobierania — to rola twojego ORDER BY
klauzula w twoim SELECT
klauzula podczas dostępu do wierszy.
Aby osiągnąć taki cel, możesz zastosować obejście, umieszczając ORDER BY
klauzula w podzapytaniu i działa:
INSERT INTO myTargetTable
(
SELECT mySequence.nextval, sq.* FROM
( SELECT f1, f2, f3, ...fx
FROM mySourceTable
WHERE myCondition
ORDER BY mySortClause
) sq
)