Sowohl dcw als auch Dems haben entsprechende alternative Abfragen bereitgestellt. Ich wollte nur erklären, warum sich Ihre Abfrage nicht so verhält, wie Sie es erwartet haben.
Wenn Sie eine Abfrage haben, die eine ROWNUM und eine ORDER BY enthält, wendet Oracle zuerst die ROWNUM und dann die ORDER BY an. Also die Abfrage
SELECT *
FROM emp
WHERE rownum <= 5
ORDER BY empno
erhält beliebige 5 Zeilen aus dem EMP
Tabelle und sortiert sie - mit ziemlicher Sicherheit nicht das, was beabsichtigt war. Wenn Sie die "ersten N" Zeilen mit ROWNUM erhalten möchten, müssen Sie die Abfrage verschachteln. Diese Abfrage
SELECT *
FROM (SELECT *
FROM emp
ORDER BY empno)
WHERE rownum <= 5
sortiert die Zeilen in der EMP-Tabelle und gibt die ersten 5 zurück.