본문 바로가기
데이터베이스/MSSQL

OFFSET FETCH 절 (페이징,LIMIT)

by 죠부니 2018. 8. 8.
반응형

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;

반응형