ROW_NUMBER()的使用--分页

使用范围

  •  可以Oracle中使用
  •  可以hive可以用
  •  MySQL5.7用不了,MySQL8以后加入了窗口函数

语法格式
  row_number() over(partition by 分组列 order by 排序列 desc)

注意
  在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。

案例讲解

先看一句代码:

select *,row_number() OVER(ORDER BY  教师工号) AS 字段编号 from 教师表

其中ROW_NUMBER()函数根据‘教师工号’这列来生成一个新的数据列‘字段编号’,并且是按照升序来进行编号的。

教师工号            教师姓名                 教学课程编号               教学课程                 字段编号
--------------- -------------------- -------------------- -------------------- --------------------
200401          赵子丹                  1001                 ASP.NET              1
200402          李林                   1001                 ASP.NET              2
200403          黄建波                  1001                 ASP.NET              3
200404          易明                   1002                 JAVA                 4
200405          张理                   1002                 JAVA                 5
200406          吴平                   1002                 JAVA                 6
200407          小燕                   1003                 数据结构                 7
200408          肖行                   1003                 数据结构                 8
200409          李峰                   1005                 计算机组成原理              9
200410          张明                   1005                 计算机组成原理              10
200411          王学军                  1006                 思想品德               11
200412          肖舒                   1006                 思想品德                12
200413          孟爷                   1001                 ASP.NET              13

下边来看一个对ROW_NUMBER()函数的简单分页应用:

SELECT * FROM 

(select *,row_number() OVER(ORDER BY  教师工号) AS 字段编号 from 教师表) a

WHERE a.字段编号BETWEEN 5 AND 10

根据上面的sql语句可以查询出5-10的记录。

posted @ 2017-12-29 13:50  达摩院的BLOG  阅读(211)  评论(0)    收藏  举报