黑马程序员技术交流社区

标题: 数据库中关于Row_Number()的用法? [打印本页]

作者: 肖云    时间: 2012-6-25 03:23
标题: 数据库中关于Row_Number()的用法?
数据库中关于Row_Number()应该怎么用,教程中将的不清楚,谁帮忙说明一下,最好是举例说明,不胜感激!
作者: 许庭洲    时间: 2012-6-25 09:11
row_number函数的功能是为查询出来的每一行记录生成一个序号;
例如SQL:select row_number() over(order by field1) as row_number, * from  t_field;
上面SQL语句查询结果如下所示:


作者: 小高    时间: 2012-6-25 18:55
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。
示例:
xlh           row_num
1700              1
1500              2
1085              3
710                4

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)


作者: 肖云    时间: 2012-6-25 23:50
多谢许庭洲,多谢小高,我懂了
作者: xiaozehope    时间: 2012-6-30 23:40
补充一下,ROW_NUMBER()是用于查询第几条到第几条数据的一个函数,sql2005以上才有的,ROW_NUMBER() 后面的over()是排序的字段。
作者: 程艳伟    时间: 2012-7-1 13:39
Row_Number()就是为你查询的没行编号,但是sql2000是没有该方法的,以前用动软生成分页方法,里面有个row_number(),到2000的数据库上竟然没有该方法,后来千辛万苦自己把这个方法用sql语句代替了,但是一直担心会漏掉数据或重复数据




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2