상위 n행 뽑기

파랑·2021년 8월 13일
0

오라클에서 제공하는 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

0개의 댓글

관련 채용 정보