반응형
paging query
데이터를 5개씩 보여주는 페이징 쿼리를 작성해보자
DECLARE @PAGE_NO INT = 1 -- 페이지 번호
DECLARE @PAGE_SIZE INT = 5 -- 한 페이지에 보여줄 row 수
SELECT rownum
, name
, age
, totalCnt
FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY age) AS rownum
, name, age
, COUNT(*) OVER() AS totalCnt
FROM table_ggmouse
) A
WHERE rownum BETWEEN ((@PAGE_NO-1)*@PAGE_SIZE)+1 AND (@PAGE_NO*@PAGE_SIZE)
OFFSET ROWS FETCH
SQL Server 2012부터 지원되는 OFFSET ROWS FETCH를 이용하여 paging query를 작성해보자
OFFSET ROWS FETCH 사용법
ORDER BY 컬럼
OFFSET 숫자 {ROW | ROWS}
FETCH {FIRST | NEXT} 숫자 {ROW | ROWS} ONLY
OFFSET 숫자 {ROW | ROWS}
해당 숫자의 행을 건너뛰게 된다. 즉, 해당 숫자 이후의 행부터 출력된다.
FETCH {FIRST | NEXT} 숫자 {ROW | ROWS} ONLY
해당 숫자의 개수만큼 출력된다.
위의 예제와 동일하게 데이터를 5개씩 보여주는 페이징 쿼리를 작성해보자
DECLARE @PAGE_NO INT = 1 -- 페이지 번호
DECLARE @PAGE_SIZE INT = 5 -- 한 페이지에 보여줄 row 수
SELECT name, age
FROM table_ggmouse
ORDER BY age
OFFSET (@PAGE_NO-1)*@PAGE_SIZE ROW
FETCH NEXT @PAGE_SIZE ROW ONLY
반응형
'프로그래밍 > MSSQL' 카테고리의 다른 글
[MSSQL] IF ELSE 조건문 (+ PRINT 구문 사용 주의) (1) | 2019.11.20 |
---|---|
[MSSQL] ISDATE, ISNUMERIC, ISNULL, ISJSON (0) | 2019.11.18 |
[MSSQL] GROUP BY COUNT 그룹으로 묶어 집계하기 (2) | 2019.11.05 |
[MSSQL] STUFF, REPLACE 문자열 치환 (0) | 2019.11.04 |
[MSSQL] INSERT (데이터 삽입), SELECT INTO (테이블 복사), INSERT INTO SELECT (데이터 복사) (3) | 2019.10.26 |