DECLARE @pageNumber INT = -- 前端传来的页码 从1开始
DECLARE @pageSize INT = -- 前端传来的每页大小
SELECT *
FROM Students
ORDER BY BirthDate
OFFSET (@pageNumber - 1) * @pageSize ROWS
FETCH NEXT @pageSize ROWS ONLY;
注意 ,不能再和top共用了。
OFFSET (@pageNumber - 1) * @pageSize ROWS
FETCH NEXT @pageSize ROWS ONLY;
这句话固定插入到尾部
需要2012以及以后版本支持
另外的实现方式 ,这种方式个人感觉侵入性太大,那些语句都要调整。
DECLARE @pageNumber INT = -- 这里接收前端传来的页码
DECLARE @pageSize INT = -- 这里接收前端传来的每页大小
-- 使用ROW_NUMBER()函数创建临时序列
WITH Paging AS (
SELECT
ROW_NUMBER() OVER (ORDER BY BirthDate) AS RowNum,
s.*
FROM
Students s
)
-- 根据页码和每页大小选取指定范围内的记录
SELECT *
FROM Paging
WHERE RowNum BETWEEN (@pageNumber - 1) * @pageSize + 1 AND @pageNumber * @pageSize;
网友评论