2017-05-19 4 views
1

ページネーション(NEXTをFETCH OFFSET)

DECLARE @PageSize INT = 5 
     ,@PageNo INT = 2 

SELECT * 
FROM [MyTable] 
ORDER BY [NO] 
OFFSET @PageSize * (@PageNo - 1) ROWS 
FETCH NEXT @PageSize ROWS ONLY 
+1

'ISNULL(@PageSize *(@PageNo試みることができる - 1 )、0) '、' ISNULL(@PageSize、2147483647) 'はテーブルを実際には20億行以上持っていないと仮定していますが、エンジンがこれを効率的に最適化するかどうかはわかりません。そうでなければ、あなたの唯一の手段は別のクエリです。 –

+0

@ JeroenMostert、私はちょうどあなたと同じ変更:) – TriV

答えて

2

あなたはこの

SET @PageSize = ISNULL(@PageSize, 2147483647) -- max int 
SET @PageNo = ISNULL(@PageNo, 1) 

SELECT * 
FROM [MyTable] 
ORDER BY [NO] 
OFFSET @PageSize * (@PageNo - 1) ROWS 
FETCH NEXT @PageSize ROWS ONLY 
+0

私は大丈夫ですが、私のコードは大きなクエリですので、私は1つのクエリでそれを管理したい。 – SHD

+0

私の答えは少し変わります.... – TriV

関連する問題