前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SQL Server 常用的两种分页方式

SQL Server 常用的两种分页方式

原创
作者头像
全栈研发知识库
修改2025-03-05 10:50:34
修改2025-03-05 10:50:34
2781
举报

SqlServer-分页方式

在 SQL Server 中,实现分页通常有两种常见的方法:使用 OFFSET 和 FETCH 子句,以及使用 ROW_NUMBER() 函数。这两种方法都可以用来实现分页,但它们适用于不同的场景和需求。

使用 OFFSET 和 FETCH 子句

从 SQL Server 2012 开始,你可以使用 OFFSET 和 FETCH 子句来简化分页查询。这种方法非常直观,适用于大多数分页需求。

代码语言:sql
复制
-- 查询XbMaster表第1页数据,每页10行
select m.[Code],m.[Name] from dbo.XbMaster as m
order by m.Code asc
offset 0 rows FETCH NEXT 10 rows only;

-- 查询XbMaster表第2页数据,每页10行
select m.[Code],m.[Name] from dbo.XbMaster as m
order by m.Code asc
offset 10 rows FETCH NEXT 10 rows only;

使用 ROW_NUMBER() 函数

ROW_NUMBER() 函数通常与 OVER() 子句一起使用,可以更灵活地处理分页,尤其是在需要基于多列排序或处理复杂逻辑时。

代码语言:sql
复制
-- 查询XbMaster表第1页数据,每页10行
with OrderedResults as(
	select SerialNo,[Name],
	row_number() over (order by SerialNo) as rowIndex 
	from dbo.XbMaster 
)
select * from OrderedResults as t 
where t.rowIndex between 1 and 10;

-- 查询XbMaster表第2页数据,每页10行
with OrderedResults as(
	select SerialNo,[Name],
	row_number() over (order by SerialNo) as rowIndex 
	from dbo.XbMaster 
)
select * from OrderedResults as t 
where t.rowIndex between 11 and 20;

总结

使用 OFFSET 和 FETCH 子句的方法简单直接,适用于大多数基本的分页需求。需要SQL Server 2012 或更高版本。

使用 ROW_NUMBER() 函数的方法提供了更多的灵活性,特别是在处理更复杂的排序或需要基于多列排序时。选择哪种方法取决于你的具体需求和SQL Server的版本。如果你使用的是 SQL Server 2012 或更高版本,推荐使用 OFFSET 和 FETCH 子句,因为它更简洁且易于理解。对于更复杂的分页需求,ROW_NUMBER() 方法则更为合适

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SqlServer-分页方式
    • 使用 OFFSET 和 FETCH 子句
    • 使用 ROW_NUMBER() 函数
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档