본문 바로가기

DB/mssql

[mssql] paging limit offset



DECLARE @page INT = 1

DECLARE @offset INT = 5


;WITH TempTable AS

(

    SELECT ROW_NUMBER() OVER (ORDER BY 정렬컬럼 ) AS RowNum

, *

    FROM Table WITH(NOLOCK)

    WHERE 조건

)

SELECT *

FROM TempTable

WHERE RowNum > ( CASE WHEN @page > 1 THEN ( @page - 1 ) * @offset ELSE 0 END ) 

AND RowNum <= ( @page * @offset )