zoukankan      html  css  js  c++  java
  • Row_Number实现分页

       分页方法一 一般的我们查询一些记录出来之后,查询出来的记录就是我们想要的,如果 我们的表中有一个ID为自动编号,那么如果表中的ID为连续的话,我们查询出来的第一列数据就会像这样:

       I D    字段1 字段2
     1    ……    ……  
     2  ……    ……  
     3  ……    ……  
     4  ……    ……  
     5  ……    ……  

      

      再做一个假设,如果我们的表中没有ID呢,或者ID号不是连续的呢,如果我们按照ID来分页的话就会碰到一些小问题。为了解决分页的问题,微软在SQL Server 2005中添加了这个内置函数。当我们的数据表中即使没有一个自增ID的话,使用Row_Number()函数照样能实现自增的一串连续的记录,就像上表的 ID一样。   例如: select row_number() over(order by getdate() desc) as rownumber,* from table   这条SQL语句的意思是查询一个自增的row_number列(在查询的结果中rownumber这列来表示row_numvber的结果)以及table表中的所有记录需要注意的是row_number是做过排序的根据日期进行倒序排序。结果类似这样的:

                                                          

                                                        

           解释:这里设置的是每页实现5条记录,变量为当前页的索引号,在这里为了符合正常思维,对索引页号进行了处理(减1操作)。通过对变量@currentPageIndex 进行赋不同的值,可以看到效果。  

          分页方法之二

               方式一:在当前select中不能采用RowNumber字段,并且不能使用排序

                 示例代码:

                                                             

        代码解释:使用Row_Number()函数实现自增的一串连续的记录,在从testdata表中选出rownumber不在5到10之间的记录

        方式二: ROW_NUMBER() OVER ROW_NUMBER()就是生成一个有顺序的行号,其生成的标准就是后面紧跟的OVER(order by XX)  

        示例代码:

           方式三:

                示例代码:

                                                          

        前面提到的使用in,not in,top来进行返回特定的页,要使用很多的特殊的限制条件(比如id要递增),而ROW_NUMBER()恰好能很好的解决这个问题,帮我们实现自定义分页。

         示例代码:

                                                           

         代码解释:pageIndex就是数据的页数,此种方法相当于对任何字段都生成了一个新的排序列。这样就可以很方便的是实现自定义分页

  • 相关阅读:
    UVALive 5066 Fire Drill --BFS+DP
    Codeforces 486E LIS of Sequence --树状数组求LIS
    Codeforces 460D Little Victor and Set --分类讨论+构造
    Codeforces Round #285 (Div.1 B & Div.2 D) Misha and Permutations Summation --二分+树状数组
    计算机组成原理知识总结
    HDU 5155 Harry And Magic Box --DP
    【Python数据分析】简单爬虫 爬取知乎神回复
    《查拉图斯特拉如是说》读书笔记
    POJ 3384 Feng Shui --直线切平面
    POJ 2540 Hotter Colder --半平面交
  • 原文地址:https://www.cnblogs.com/tianyiyi/p/2844566.html
Copyright © 2011-2022 走看看