sql server翻页查询

2024-04-02  本文已影响0人  吉凶以情迁
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;
上一篇 下一篇

猜你喜欢

热点阅读