오라클에서 제공하는 ROWNUM을 사용하여 N개를 뽑아낼 수 있다. 그러나 정렬 한 상태의 결과셋 중에 N개를 뽑아내려고 한다면 SQL 문장의 실행 순서를 고려하여 잘 짜야 한다.
sql select문의 실행 순서
from
=> where
=> group by
=> having
=> order by
=> select
select *
from emp
where rownum <= 5
order by sal
위의 sql 문장을 실행하면 정렬되지 않은 상태로 5개를 뽑고 난 후에 정렬을 시키기 때문에 전체 정렬이 되지 않은 결과셋이 뽑히게 된다. 따라서 서브쿼리를 사용하여 이렇게 바꿔줘야한다.
select *
from (select * from emp order by sal)
where rownum <= 5