본문 바로가기
IT 개발

[SQL] MSSQL에서 ROWNUM 사용하여 페이징 하기

by 로보찌빠냥 2011. 2. 15.

mssql 도 오라클처럼 rownum을 사용할 수 있습니다. 조금 다르지만 사용가능합니다.
예)
- 한 페이지에 10개씩 출력되는 게시판의 첫번째 페이지이고
- ExTable ( exid varchar(20), regdate datetime) 라고 가정하고.
- 페이지 스케일이 10 row 일때
 
SELECT exid, regdate
FROM ( 
SELECT Row_Number() OVER (ORDER BY regdate DESC) AS rownum, exid, regdate FROM ExTable
) Table
WHERE rownum BETWEEN [(페이지번호-1) * 스케일+1] AND [페이지번호 * 스케일]

이렇게 쓰면 됩니다.
'not in' 에 서브쿼리로 구현한 것 본적이 있는데 페이지 수가 많아지면 골치아파 집니다.
not in은 절대 비추입니다.

단 MSSQL 2000 에서는 안되는걸로 알고있습니다.
반응형

댓글