Jak dcw, tak Dems poskytly vhodné alternativní dotazy. Jen jsem chtěl přihodit vysvětlení, proč se váš dotaz nechová tak, jak jste očekávali.
Pokud máte dotaz, který obsahuje ROWNUM a ORDER BY, Oracle použije nejprve ROWNUM a poté ORDER BY. Takže dotaz
SELECT *
FROM emp
WHERE rownum <= 5
ORDER BY empno
získá libovolných 5 řádků z EMP
stůl a třídí je-- téměř jistě ne to, co bylo zamýšleno. Pokud chcete získat „prvních N“ řádků pomocí ROWNUM, budete muset dotaz vnořit. Tento dotaz
SELECT *
FROM (SELECT *
FROM emp
ORDER BY empno)
WHERE rownum <= 5
seřadí řádky v tabulce EMP a vrátí prvních 5.