Sia dcw che Dems hanno fornito query alternative appropriate. Volevo solo fornire una spiegazione del motivo per cui la tua query non si sta comportando come ti aspettavi.
Se hai una query che include un ROWNUM e un ORDER BY, Oracle applica prima il ROWNUM e poi ORDER BY. Quindi la domanda
SELECT *
FROM emp
WHERE rownum <= 5
ORDER BY empno
ottiene 5 righe arbitrarie da EMP
tavolo e li ordina-- quasi certamente non quello che era previsto. Se vuoi ottenere le "prime N" righe usando ROWNUM, dovrai annidare la query. Questa domanda
SELECT *
FROM (SELECT *
FROM emp
ORDER BY empno)
WHERE rownum <= 5
ordina le righe nella tabella EMP e restituisce le prime 5.