SQL Server 分页查询语句
1.分页查询1:
必须带有主键 ID,且主键ID 是标识列,必须是自增的。
原理:需要拿出数据库的第5页,就是40-50条记录,首先拿出数据库中的前40条记录的 ID 值,然后再拿出剩余部分的前 10 条元素。
declare @pagesize int;
select @pagesize = 5;
declare @pageindex int;
select @pageindex = 3;
select top (@pagrrsize) * from ScoreFoNew2 where id not in
(
'(10*(2-1))为页大小*当前第几页-1
select top (@pagesize*(@pageindex-1)) id from ScoreInfoNew2 order by id
)
order by id
2.分页查询2:
原理:先查询前40条记录,然后获得其 ID 值,如果 ID 值为null的,那么就返回0;然后查询 id 值大于前40条记录的最大 id 值的记录。
这个查询有一个条件,就是 id 必须是 int 类型的。
declare @pagesize int;
select @pagesize = 5;
declare @pageindex int;
select @pageindex = 3;
select top (@pagrrsize) * from ScoreFoNew2 where id >
(
select isnull(max(id),0) from
(
'(10*(2-1))为页大小*当前第几页-1
select top (@pagesize*(@pageindex-1)) id from ScoreInfoNew2 order by id
) A
)
order by id
3.分页查询3:
原理:先把表中的所有数据都按照一个 rowNumber 运行培训,然后查询 rowNumber 大于40的前十条记录,这种方法和 oracle 中的一种分页方式类似,不过只支持 2005 版以上的。
declare @pagesize int;
select @pagesize = 5;
declare @pageindex int;
select @pageindex = 3;
select top (@pagrrsize) * from
(
select row_number() over(order by id) as rownumber, * from ScoreInfoNew2
) A
'(10*(2-1))为页大小*当前第几页-1
where rownumber > (@pagesize * (@pageindex-1))
分页查询4
要求必须在 SQL server 2012 版本之后方可支持。
declare @pagesize int;
select @pagesize = 5;
declare @pageindex int;
select @pageindex = 3;
select * from ScoreFoNew2 order by id
offset (@pagesize(@pageindex-1)) '间隔多少条开始
rows fetch next (@pagesize) '获取多少条
rows only
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?