zoukankan      html  css  js  c++  java
  • 知方可补不足~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

    回到目录

  • 相关阅读:
    GKCTF2020
    PTA的Python练习题(二十三)
    Web刷题之旅(三)
    Web刷题之旅(二)
    Web刷题之旅(一)-攻防世界 站
    PTA的Python练习题(补)
    Ctfshow
    Ctfshow
    15、实操篇——Vi和Vim编译器
    13、14、实操篇——远程登录到Linux服务器和远程上传下载文件
  • 原文地址:https://www.cnblogs.com/lori/p/3340512.html
Copyright © 2011-2022 走看看