티스토리 뷰

ms sql 서버 에서는 top n 쿼리가 있어서 그냥 상위 몇개만 가져오고 싶을때

select top 5 * from tbl;

이런식으로 썼다.

하지만..

오라클에서 쓰려고 했는데 top n 쿼리가 없어서 어떻게 써야 하나 봤더니..

rownum 이라고 있긴 했다.

그러나 rownum을 쓸때는 조심해야 한다.

예를들어

select * from user where rownum<10 order by upt_dm desc;

이러면 업데이트 순으로 정렬하여 상위 9개를 가져오는것 처럼 보이지만 잘못 되었다.

왜냐하면 select 구문에서는 where 절이 먼저 실행되기 때문에 상위 9개 먼저 가져오고 최신순으로 정렬하는 것이다.

그래서 제대로 쓰려면

select * from(
  select * from user order by upt_dm desc)
where rownum<10;

이렇게 써야 최신순으로 정렬된 상위 9개를 제대로 가져올 수 있다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함