下面介绍一个SQL Server 2005 中的新东东:
ROW_NUMBER
返回结果集分区内行的序列号,每个分区的第一行从 1 开始。

语法:
ROW_NUMBER ( )     OVER ( [ <partition_by_clause> ] <order_by_clause> )

备注:
ORDER BY 子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。

参数:
<partition_by_clause>
将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。
<order_by_clause>
确定将 ROW_NUMBER 值分配给分区中的行的顺序。

返回类型:
bigint

示例:

SELECT * INTO #T
  FROM(
      SELECT 2 F1, 'AA' F2, '101' F3 UNION ALL
      SELECT 1 F1, 'AA' F2, '102' F3 UNION ALL
      SELECT 4 F1, 'BB' F2, '103' F3 UNION ALL
      SELECT 5 F1, 'CC' F2, '104' F3 UNION ALL
      SELECT 3 F1, 'AA' F2, '105' F3 UNION ALL
      SELECT 7 F1, 'BB' F2, '106' F3 UNION ALL
      SELECT 6 F1, 'CC' F2, '107' F3 UNION ALL
       SELECT 5 F1, 'CC' F2, '108' F3 
  ) T1

--1
SELECT row_number() OVER (ORDER BY F1 ASC) AS F1Order, * FROM #T 
--先按照F1顺序,再加上顺序号F1Order,结果如下:
F1Order              F1          F2   F3
-------------------- ----------- ---- ----
1                    1           AA   102
2                    2           AA   101
3                    3           AA   105
4                    4           BB   103
5                    5           CC   104
6                    5           CC   108
7                    6           CC   107
8                    7           BB   106

--2
SELECT row_number() OVER (ORDER BY F1 DESC) AS F1Order, * FROM #T 
--先按照F1倒序,再加上顺序号F1Order,结果如下:
F1Order              F1          F2   F3
-------------------- ----------- ---- ----
1                    7           BB   106
2                    6           CC   107
3                    5           CC   108
4                    5           CC   104
5                    4           BB   103
6                    3           AA   105
7                    2           AA   101
8                    1           AA   102

--3
SELECT row_number() OVER (ORDER BY F1 ASC) AS F1Order, * FROM #T ORDER BY F1 ASC
--先按照F1顺序,再加上顺序号F1Order,再把结果按F1顺序显示,结果如下:
F1Order              F1          F2   F3
-------------------- ----------- ---- ----
1                    1           AA   102
2                    2           AA   101
3                    3           AA   105
4                    4           BB   103
5                    5           CC   104
6                    5           CC   108
7                    6           CC   107
8                    7           BB   106

--4
SELECT row_number() OVER (ORDER BY F1 ASC) AS F1Order, * FROM #T ORDER BY F1 DESC
--先按照F1顺序,再加上顺序号F1Order,再把结果按地F1倒序显示,注意顺序号F1Order也倒过来了,保持位置相对不变,结果如下:
F1Order              F1          F2   F3
-------------------- ----------- ---- ----
8                    7           BB   106
7                    6           CC   107
5                    5           CC   104
6                    5           CC   108
4                    4           BB   103
3                    3           AA   105
2                    2           AA   101
1                    1           AA   102

--5
SELECT row_number() OVER (ORDER BY F1 DESC) AS F1Order, * FROM #T ORDER BY F1 ASC
--先按照F1倒序,再加上顺序号F1Order,再把结果按地F1顺序显示,注意顺序号F1Order也倒过来了,保持位置相对不变,结果如下:
F1Order              F1          F2   F3
-------------------- ----------- ---- ----
8                    1           AA   102
7                    2           AA   101
6                    3           AA   105
5                    4           BB   103
3                    5           CC   108
4                    5           CC   104
2                    6           CC   107
1                    7           BB   106

--6
SELECT row_number() OVER (ORDER BY F1 DESC) AS F1Order, * FROM #T ORDER BY F1 DESC
--先按照F1倒序,再加上顺序号F1Order,再把结果按地F1倒序显示,结果如下:
F1Order              F1          F2   F3
-------------------- ----------- ---- ----
1                    7           BB   106
2                    6           CC   107
3                    5           CC   108
4                    5           CC   104
5                    4           BB   103
6                    3           AA   105
7                    2           AA   101
8                    1           AA   102

--7
SELECT row_number() OVER (PARTITION BY F2 ORDER BY F1 ASC) AS F1Order, * FROM #T
--先按照F2分组,再按F1顺序,再加上顺序号F1Order,是分组加哦。结果如下:
F1Order              F1          F2   F3
-------------------- ----------- ---- ----
1                    1           AA   102
2                    2           AA   101
3                    3           AA   105
1                    4           BB   103
2                    7           BB   106
1                    5           CC   104
2                    5           CC   108
3                    6           CC   107

--8
SELECT row_number() OVER (PARTITION BY F2 ORDER BY F1 DESC) AS F1Order, * FROM #T
--先按照F2分组,再按F1倒序,再加上顺序号F1Order,是分组加哦。结果如下:
F1Order              F1          F2   F3
-------------------- ----------- ---- ----
1                    3           AA   105
2                    2           AA   101
3                    1           AA   102
1                    7           BB   106
2                    4           BB   103
1                    6           CC   107
2                    5           CC   108
3                    5           CC   104

最后,可以利用row_number(),可以进行自定义分页,Top 3是每页记录数,pageIndex就是我们需要数据的页数。是不是很简单?

DECLARE @PageIndex INT
SELECT @PageIndex = 1 
SELECT TOP 3 * FROM
(
  SELECT row_number() OVER (ORDER BY F1 ASC) AS F1Order, * FROM #T 
) A 
WHERE F1Order > (@PageIndex * 3)

转自:http://blog.csdn.net/panys/archive/2007/11/12/1880589.aspx

SQL Server 2005 中行号的显示,分页相关推荐

  1. SQL SERVER 2005 显示行号

    在SQL SERVER 2005 中,要在查询分析器中显示"行号" Path: 工具--选项--所有语言--常规--显示--行号

  2. Sql Server 2005自定义分页

    前面一篇随笔,我提到了Sql Server 2000的自定义分页,但是在sql server 2000中,要实现显示某一页,就返回那一页数据的效果的方法实在不尽人意.网上很多通用的分页存储过程,但看着 ...

  3. Sql Server 2005 row_number()分页性能测试

    现在分页方法大多集中在select top/not in/游标/row_number,而select top分页(在这基础上还有二分法)方法似乎更受大家欢迎,这篇文章并不打算去讨论是否通用的问题,本着 ...

  4. ASP.NET 2.0在SQL Server 2005上自定义分页

    这篇文章讲述了如何利用SQL Server 2005的新特性来简单高效的实现分页.对于那些暂时还没用到SQL Server2005的人们,请看在大规模数据中的高效分页方法.如果需要,这篇文章会补上这里 ...

  5. Sql Server 2005 中的row_number() 分页技术

    原文发布时间为:2009-05-08 -- 来源于本人的百度文章 [由搬家工具导入] 在Sql Server 2005中,我们可以利用新增函数row_number()来更高效的实现分页存储 CREAT ...

  6. Sql Server 2005 ROW_NUMBER 函数实现分页

    过去用SQL Server 2000分页的,大多都用到了临时表.SQL Server 2005 ROW_NUMBER 函数支持分页,性能据说也非常不错. Paging Records Using SQ ...

  7. Microsoft SQL Server 2005 查询分页

    微软新的SQL Server 2005新增了数据库分页功能,以后再也用写复杂不灵活而低效率的分页存储过程. 新的数据库分页功能的核心是一个叫row_number的函数 具体如下: 返回结果集分区内行的 ...

  8. Sql Server 2005 分页

    摘要:Sql Server 分页查询sql! Sql Server 2005分页查询数据,适用于手机端和服务器端交互 一:Dao代码: /*** 分页查询研讯分类下的新闻列表*/@Overridepu ...

  9. SQL Server 2005中的Row_Number分页

    早就听说了SQL Server 2005中的Row_Number分页了,但是一直就没认真理解这个Row_Number的含义.这两天实在是太忙了,但是还是坚持将这个弄明白了.在说分页之前还是来了解一下R ...

最新文章

  1. 【python】一个目录里面多个python程序文件,统计一下里面有多少行代码。即分别列出:代码、空行、注释的行数。
  2. LeetCode Unique Binary Search Trees II(递归或者dp)
  3. 设计赋能,数联杭温!2020温州“市长杯”·数字设计(杭州)专项赛开始报名啦!...
  4. .net中自定义过滤器对Response内容进行处理
  5. 使用NoSQL实现实体服务–第4部分:Java EE
  6. 计算机师范类算师范教育类吗,师范教育类专业和计算机类专业,两者相比,哪个更适合自考生报读...
  7. lightroom手机版下载_vnc控制手机版下载,vnc控制手机版下载的使用教程
  8. m1芯片MacBook安装本地编译版matplotlib库
  9. HDU3544 不平等博弈
  10. vs2010中外联qt,使用qt编程
  11. 联合国基金会 广告投放 策略
  12. python如何在图片上添加文字_Python在图片中添加文字的两种方法
  13. vue多次引用组件,减少每个页面import的方法
  14. 2018-2019ICPC焦作C题Supreme Command kd-tree
  15. 如何策划新闻营销的主题?
  16. jQuery+PHP实现的砸金蛋中奖程序
  17. Excel 数据解析异常
  18. Complex-Valued CNN and Its Application in Polarimetric SAR Image Classification
  19. 编一程序,将两个字符串连接起来,不要用strcat函数。
  20. 全球及中国工业级脱脂毛巾行业销售前景与渠道模式分析报告2022版

热门文章

  1. centos mysql proxy_CentOS7搭建MysqlProxy实现读写分离
  2. 71计算机组装与维修期中,《计算机维修》期中考试卷
  3. html头部协议,TCP/IP协议头部结构体
  4. bbs.php168,PHP168 下载安装教程
  5. matlab 概率论,matlab.概率论.doc
  6. 自旋锁 轻量锁_Java知识进阶-程序员升往架构师必经之路-自旋锁-知识铺
  7. python求两个数的最大值、用带参函数实现_Python有参函数使用代码实例
  8. php中type的格式,javascript – 在php中动态生成的输入[type = date]格式值
  9. 计算机上没有系统软件应用软件也一样能使用,2010判断题一般双击桌面上的程序图标可以打开该程序...
  10. keil5——常见报错【cannot load flash device description】