zoukankan      html  css  js  c++  java
  • SQL Server 2005中的Row_Number分页

    早就听说了SQL Server 2005中的Row_Number分页了,但是一直就没认真理解这个Row_Number的含义。这两天实在是太忙了,但是还是坚持将这个弄明白了。在说分页之前还是来了解一下Row_Number到底是什么意思吧。我的理解是这样的,一般的我们查询一些记录出来之后,查询出来的记录就是我们想要的,如果我们的表中有一个ID为自动编号,那么如果表中的ID为连续的话,我们查询出来的第一列数据就会像这样:

    ID 字段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 test_table

    这条SQL语句的意思是查询一个自增的row_number列(在查询的结果中rownumber这列来表示row_numvber的结果)以及test_table表中的所有记录,需要注意的是row_number是做过排序的,根据日期进行倒序排序。结果类似这样的:

    image

    那么如何分页呢,给出一个示范代码:

    declare @currentPageIndex int
    set @currentPageIndex=2
    select top 5 * from (select row_number() over(order by getdate() desc) as rownumber,* from test_table) as temp_table
    where rownumber>5*(@currentPageIndex-1)

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

  • 相关阅读:
    RobotFrameWork中使用Chrome浏览器
    vim使用手册
    执行sudo supervisorctl reload报错ImportError: No module named supervisor.supervisord
    博客园批量发闪存,获取小星星
    python + selenium + unittest实现简单的UI自动化
    java + selenium + testng实现简单的UI自动化
    读《你的知识需要管理》(整理)
    python:实现几种排序算法
    python:求整数的二进制表示
    老张烧开水的故事(故事来源网络)
  • 原文地址:https://www.cnblogs.com/liszt/p/1993216.html
Copyright © 2011-2022 走看看