게시판 목록을 뿌려줄때 언제나 고민하게 되는 사항이다. (MS-SQL 기준)
꼭 알자 !!
1. select * from board
--> 누구나 익숙한 목록 쿼리다
2. SELECT TOP @PageSize * FROM board
WHERE no NOT IN
(SELECT TOP (@iPage * @PageSize) no FROM board
ORDER BY no ASC)
ORDER BY no ASC
--> 서브 쿼리를 이용하는 방법이다.
@iPage : 현재 페이지번호 (기본값 0) , @PageSize : 한페이지당 출력할 게시글수
만약, 1페이지에서 해당 게시글 10개 가져온다면 다음과 같다.
SELECT TOP 10 * FROM board
WHERE no NOT IN
(SELECT TOP 0 no FROM board
ORDER BY no ASC)
ORDER BY no ASC
3. select * from board
where thread in
( select top 20 thread from
( select top 1020 thread from board
order by thread desc ) as a
order by thread asc )
order by thread desc
--> 1000번째 부터 20개 불러오기
내 게시판에서 돌려 쓰는 방법이다.
MS-SQL 은 MySQL 처럼 limit 가 없기 때문에 Top 을 이용해서 그 갯수만큼 불러와야 한다.
아놔; limit 만들어 주면 안되나 ㅋㅋ
(*) 쿼리 수행처리 수행능력은 3번 > 2번 > 1번이다.
가급적이면 3번을 쓰자 아자 !!!