下载吧 - 绿色安全的游戏和软件下载中心

软件下载吧

当前位置:软件下载吧 > 数据库 > MS_SQL > SQL开发知识:SQL server分页的4种方法示例(很全面)

SQL开发知识:SQL server分页的4种方法示例(很全面)

时间:2024-03-13 13:57作者:下载吧人气:24

这篇博客讲的是SQL server的分页方法,用的SQL server 2012版本。下面都用pageIndex表示页数,pageSize表示一页包含的记录。并且下面涉及到具体例子的,设定查询第2页,每页含10条记录。

首先说一下SQL server的分页与MySQL的分页的不同,mysql的分页直接是用limit (pageIndex-1),pageSize就可以完成,但是SQL server 并没有limit关键字,只有类似limit的top关键字。所以分页起来比较麻烦。

SQL server分页我所知道的就只有四种:三重循环;利用max(主键);利用row_number关键字,offset/fetch next关键字(是通过搜集网上的其他人的方法总结的,应该目前只有这四种方法的思路,其他方法都是基于此变形的)。

要查询的学生表的部分记录

SQL开发知识:SQL server分页的4种方法示例(很全面) 

方法一:三重循环 思路

先取前20页,然后倒序,取倒序后前10条记录,这样就能得到分页所需要的数据,不过顺序反了,之后可以将再倒序回来,也可以不再排序了,直接交给前端排序。

还有一种方法也算是属于这种类型的,这里就不放代码出来了,只讲一下思路,就是先查询出前10条记录,然后用not in排除了这10条,再查询。

代码实现

— 设置执行时间开始,用来查看性能的
set statistics time on ;
— 分页查询(通用型)
select *
from (select top pageSize *
from (select top (pageIndex*pageSize) *
from student
order by sNo asc ) — 其中里面这层,必须指定按照升序排序,省略的话,查询出的结果是错误的。
as temp_sum_student
order by sNo desc ) temp_order
order by sNo asc

— 分页查询第2页,每页有10条记录
select *
from (select top 10 *
from (select top 20 *
from student
order by sNo asc ) — 其中里面这层,必须指定按照升序排序,省略的话,查询出的结果是错误的。
as temp_sum_student
order by sNo desc ) temp_order
order by sNo asc
;

标签MSSQL,SQLServer,技术文档,数据库,SQLSERVER

相关下载

查看所有评论+

网友评论

网友
您的评论需要经过审核才能显示

热门阅览

最新排行

公众号