반응형
MSSQL 2012전에는 페이징을 만들때 between을이용해서 만들어야했다.
하지만 2012에서는 OFFET FETCH절을 이용해서 해당효과를 얻을수 있다.
https://technet.microsoft.com/ko-kr/library/gg699618(v=sql.110).aspx
제약사항
1. order by절이 꼭 필요하다.
2. fetch를 사용하려면 꼭 offset절이 필요하다.
예제1
SELECT * FROM TABLE ORDER BY column OFFSET 10 ROWS;
해당형태의 쿼리는 첫 10개의 행을 건너뛰고 나머지행을 반환한다.
예제2
SELECT * FROM TABLE ORDER BY column OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
10개를 건너뛰고 10개의 행을 반환한다.
---
자주사용하는 형태의 쿼리
ROW_NUMBER절을 통해서 출력번호를 지정하며
offset의 수의 조절을 통해서 현재 페이지의 위치를 지정한다.
FETCH의 숫자를 통해서는 출력될 수를 설정한다.
SELECT * FROM (SELECT ROW_NUMBER() OVER (order by idx asc) as fidx, * FROM TABLE) as T ORDER BY T.idx desc OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;
반응형
'데이터베이스 > MSSQL' 카테고리의 다른 글
expression을(를) 데이터 형식 int(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다. (0) | 2018.11.19 |
---|---|
ORDER BY string as number (0) | 2018.11.06 |
INSERT 문의 행 값 식 수가 최대 허용 행 값 수 1000을(를) 초과합니다. (0) | 2018.08.08 |
CAST 및 CONVERT(Transact-SQL) (0) | 2018.07.24 |
MSSQL 오늘 (0) | 2018.07.11 |