您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页sqlserver分页查询

sqlserver分页查询

来源:爱够旅游网

1.sqlserver2012之前的版本(row_number() over())
在 SQL Server 中,你可以使用 ROW_NUMBER() 函数来进行分页查询。以下是一个示例:

WITH OrderedResults AS
(
    SELECT column1, column2, ...,
           ROW_NUMBER() OVER (ORDER BY column1) AS RowNum
    FROM your_table
)
SELECT column1, column2, ...
FROM OrderedResults
WHERE RowNum BETWEEN 11 AND 20;

在这个示例中,ROW_NUMBER() OVER (ORDER BY column1) 会给结果集中的每一行分配一个编号。然后我们把这个结果作为子查询 OrderedResults,并在外部查询中使用 WHERE 子句来选择指定页码的数据。

如果你想要获取第 x 页的数据,你可以使用类似的计算公式:

DECLARE @PageSize INT = 10;
DECLARE @PageNumber INT = 2;

WITH OrderedResults AS
(
    SELECT column1, column2, ...,
           ROW_NUMBER() OVER (ORDER BY column1) AS RowNum
    FROM your_table
)
SELECT column1, column2, ...
FROM OrderedResults
WHERE RowNum BETWEEN (@PageNumber - 1) * @PageSize + 1 AND @PageNumber * @PageSize;

在这个示例中,我们根据页码和每页的数据行数来动态计算要返回的数据范围。通过修改 @PageSize@PageNumber 的值,你可以获取任意页的数据。
2.sqlserver2012后的版本(offset 跳过多少条 rows fetch next rows 取多少条 only)
在 SQL Server 中,可以使用 OFFSETFETCH 子句来实现分页查询。以下是一个简单的示例:

SELECT column1, column2, ...
FROM your_table
ORDER BY column1
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

在这个示例中,OFFSET 10 ROWS 表示跳过前面的 10 行数据,FETCH NEXT 10 ROWS ONLY 表示获取接下来的 10 行数据。这个查询将返回第 11 到第 20 行的数据。

如果你想要获取第 x 页的数据,可以使用类似的计算公式:

DECLARE @PageSize INT = 10;
DECLARE @PageNumber INT = 2;

SELECT column1, column2, ...
FROM your_table
ORDER BY column1
OFFSET (@PageNumber - 1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;

在这个示例中,@PageSize 定义了每页的数据行数,@PageNumber 定义了要获取的页数。通过修改这两个变量,你可以获取任意页的数据。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务