沒有使用ORM框架前,一直使用原生sql分頁,突然想起來,便隨手一記吧。。
首先,在mysql 中有一種常見的分頁方式
LIMIT總是設定為pageSize;OFFSET計算公式為pageSize * (pageIndex - 1)。
SELECT id, name, gender, score FROM students ORDER BY score DESC LIMIT 3 OFFSET 0;
但是在sql server中沒有limit關鍵詞,相對應的是TOP關鍵字,所以可以使用以下方法查詢
方法一:在這里查詢的是根據userID排序的第7,8,9條
SELECT * FROM dbo.t_user WHERE userID IN ( SELECT TOP 3 userID FROM t_user WHERE userID NOT IN ( SELECT TOP 6 userID FROM t_user ) )
方法二:其中的PageSize(分頁的大小)和PageIndex(分頁索引,初始假設為1)均為變量
SELECT * FROM ( SELECT TOP PageSize * FROM ( SELECT TOP [PageIndex*PageSize] * FROM dbo.t_user ORDER BY id ASC ) AS b ORDER BY id DESC ) AS c ORDER BY id ASC;
方法三:其中的PageSize(分頁的大小)和PageIndex(分頁索引,初始假設為1)均為變量
SELECT * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY userID ASC ) AS rownumber , * FROM dbo.t_user WHERE 1 = 1 ) AS t WHERE t.rownumber > (PageSize *(PageIndex-1)) AND t.rownumber <= (PageSize *PageIndex)
