T-SQL利用Row_Number函数实现分页

SQL:

CREATE PROCEDURE PagingViewTest
(
   @currentPageIndex INT, --页序号
   @pageSize INT, --页大小
   @pageCount INT OUTPUT  --返回值,总记录数
)
AS
BEGIN
--取总记录数 SELECT @pageCount=COUNT(OrderID) FROM dbo.sale_Order; --利用CTE以提高执行效率 WITH Result AS ( SELECT ROW_NUMBER() OVER(ORDER BY OrderID) AS rowNumber,* FROM sale_order s ) SELECT * FROM Result r WHERE ((@currentPageIndex-1)*@pageSize < rowNumber) AND (rowNumber <=@currentPageIndex*@pageSize) END

执行结果:

一直想自己实现分页的存储过程,一直没实现,今天没偷懒,言归正传,简略讲下分页的原理:分页有几个参数,当前页序号(即第几页,必须),页大小(每页显示数量,必须),总页数(可选),总记录数(可选),前台查询数据时需要向后台至少发送两个必选参数。参数有了,SQL Server也就不愁分页啦!利用Row_Number的主要原因是要对表进行编号,以确定表中记录是第X页中第X条数据,执行完Row_Number函数的表如下:

 看到rowNumber列相信大家都有思路了,只要加上where条件 前一页面*每页大小< rowNumber and。rowNumber <= 当前页面*每页大小 即可,原理就是这些,可以基于这个思路继续拓展,比如传入表名实现通用表或者视图的分页等等。

今天关于SQL分页就介绍到这里,欢迎大家批评指正。

转载于:https://www.cnblogs.com/the-three/p/3726179.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值