知方可补不足~SQL2005使用ROW_NUMBER() OVER()进行数据分页
数据分页是这个经常说的东西,无论在WEBForm还是WinForm中它都会被单独拿出来,或者是公用组件,或者是公用类库,反正对于数据分页这个东西,总是我们关注的一个话题,但事实上,数据分页归根结底是数据库的东西,更直接的说,它是数据表的范畴,对于一个SQL请求来说,你要取数据,要取多少条,从哪条开始取,这事实上就是分页实现的原理。
SQL更新到2005版之后,为开发者提供了不少函数,ROW_NUMBER() OVER ()就是其中之一,它可以为你的结果集生成一个行号,并可以快速的主位到第几条数据。
MSDN上对它的应用
USE AdventureWorks2012; GO SELECT ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS Row, FirstName, LastName, ROUND(SalesYTD,2,1) AS "Sales YTD" FROM Sales.vSalesPerson WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;
结果会把集合加上行号,如下:
在项目中,分页功能的应用,代码如下:
SELECT *FROM (SELECT ROW_NUMBER() OVER ( ORDER BY a.orderid ) AS row ,* FROM dbo.Order_Info_View AS a where CONVERT(CHAR(7),a.buytime,20)='2010-04'and a.agentid=3455) AS b WHERE b.row BETWEEN 1 AND 20
事实上,把上面的代码改一下,就可以方例的实现对某页数据的统计了,呵呵
SELECT sum(totalfee) FROM (SELECT ROW_NUMBER() OVER ( ORDER BY a.orderid ) AS row ,* FROM dbo.Order_Info_View AS a where CONVERT(CHAR(7),a.buytime,20)='2010-04'and a.agentid=3455) AS b WHERE b.row BETWEEN 1 AND 20
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示