개발관련/DB

MSSQL>페이징 처리

Diademata 2017. 7. 4. 11:21
반응형

https://technet.microsoft.com/ko-kr/library/gg699618(v=sql.110).aspx


OFFSET-FETCH 절은 결과 집합에서 창 또는 페이지로만 결과를 내보낼 수 있는 옵션을 제공합니다. OFFSET-FETCH 절은 ORDER BY 절과만 사용할 수 있습니다.


OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }

쿼리 식에서 행의 반환을 시작하기 전에 건너뛸 행 수를 지정합니다. OFFSET 절의 인수는 0보다 크거나 같은 정수 또는 식일 수 있습니다. ROW와 ROWS를 서로 바꿔 사용할 수 있습니다.

FETCH { FIRST|NEXT } <rowcount expression> { ROW|ROWS } ONLY

OFFSET 절을 처리한 후 반환할 행 수를 지정합니다. FETCH 절의 인수는 1보다 크거나 같은 정수 또는 식일 수 있습니다. ROW와 ROWS를 서로 바꿔 사용할 수 있습니다. 이와 마찬가지로 FIRST와 NEXT를 서로 바꿔 사용할 수 있습니다.

  • OFFSET 및 FETCH 절을 사용하려면 ORDER BY가 필요합니다.

  • FETCH를 사용하려면 OFFSET 절이 필요합니다. ORDER BY … FETCH를 사용할 수 없습니다.

  • 동일한 쿼리 식에서 OFFSET 및 FETCH와 함께 TOP을 사용할 수 없습니다.

  • OFFSET/FETCH rowcount 식은 정수 값을 반환하는 산술, 상수 또는 매개 변수 식 어떤 것도 될 수 있습니다. rowcount 식은 스칼라 하위 쿼리를 지원하지 않습니다.

다음 예에서는 ORDER BY와 함께 OFFSET-FETCH 절을 사용하는 방법을 보여 줍니다.

예제 1 정렬된 결과 집합에서 첫 10개 행을 건너뛰고 나머지 행을 반환합니다.

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS;

예제 2- 정렬된 결과 집합에서 첫 10개 행을 건너뛰고 다음 5개 행을 반환합니다.

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;




CREATE PROCEDURE [dbo].[procedure.User.Fetch.Page]

@page INT,

@rows INT,

@search_word nvarchar(50)

AS


SELECT 

*

FROM [dbo].[table.User]

WHERE [id] LIKE '%' + @search_word + '%' OR [nick] LIKE N'%' + @search_word + '%'  OR [key] LIKE N'%' + @search_word + '%'

ORDER BY [id] DESC

OFFSET (@page - 1) * @rows ROWS

FETCH NEXT @rows ROWS ONLY

반응형

'개발관련 > DB' 카테고리의 다른 글

Non clustered Index, clustered Index  (0) 2022.12.20
MYSQL>FIND_IN_SET  (0) 2019.03.29
MYSQL>집계함수 곱연산  (0) 2019.03.26
MYSQL>Explain  (0) 2019.03.26