데이터베이스/MSSQL
OFFSET FETCH 절 (페이징,LIMIT)
죠부니
2018. 8. 8. 12:08
반응형
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;
반응형