티스토리 뷰

반응형

웹 게시판에서 가장 많이 사용하는 기능 중 하나인 페이징 구현 시 도움이 될만한 쿼리에 대해 알아보겠습니다. MSSQL을 사용한다면 MSSQL 2012부터 지원하기 시작한 OFFSET-FETCH 구문으로 간단하게 페이징 처리를 할 수 있습니다.

 

다음 예를 통해 구체적인 사용법을 알아보겠습니다.

DECLARE @PageNumber INT;
DECLARE @PageSize INT; 

SET @PageNumber = 1;
SET @PageSize = 10;

SELECT ProductID, ProductName, Price
FROM Products
ORDER BY ProductID DESC
OFFSET ((@PageNumber - 1) * @PageSize) ROWS
FETCH NEXT @PageSize ROWS ONLY;

위 구문은 페이지 번호와 페이지 당 행의 수를 지정해 페이징을 수행하는 쿼리입니다. @PageNumber 변수는 가져올 페이지 번호, @PageSize 변수는 페이지 당 행의 수를 나타냅니다.

 

@PageNumber 가 1, @PageSize 가 10일 경우 OFFSET-FETCH 구문은 OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY 으로 ORDER BY 절에 있는 컬럼명 정렬 순으로 0개 행을 건너뛴 10개 행 데이터를 가져오게 됩니다. 

 

ORDER BY 절에 있는 컬럼명 정렬 순으로 순서대로 가져오기 때문에 정렬을 원하는 컬럼을 넣으면 간단히 원하는 순서대로 페이징 처리가 가능하고 위에서는 생략했지만 검색기능이 필요할 경우 FROM절과 ORDER BY 절 사이에 WHERE 구문을 추가하면 원하는 검색조건에 해당하는 데이터만 순서대로 페이징 처리할 수 있습니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 29 30 31
글 보관함