2024年3月17日发(作者:)
row_number() over 用法
一、row_number() over用法
row_number() over函数是DB2数据库中的一种窗口函数,它可
以在查询结果集中为每一行分配一个唯一的行号。它的基本语法如下:
row_number() over(partition by 字段名 order by 字段名
[desc]) as 别名
1. partition by 字段名:可以用来定义行号的划分,它的根据
指定的字段来分组,每一组里面获取的行号都从1开始计算。
2. order by 字段名:用来对各个组中的行号进行排序,可以使
用升序或者降序,默认是升序排序,如果要使用降序排,则需要在字
段名后面加入desc标识。
例如:
select row_number() over(partition by deptno order by sal
desc) as rn, empno,ename,sal,deptno
from emp;
这个查询的结果将会根据emp表中的deptno字段进行分组,然
后在每一组内部按sal字段降序进行排序,最后给每一行结果集分配
一个从1开始的行号。
二、row_number() over用于分页
row_number() over也可以用来实现分页功能,对于大量数据的
分页查询场景,使用这种方式会比其他方式更有效率。其基本语法如
下:
- 1 -
select *
from
(
select row_number() over(order by 字段名) as rn,*
from 表名
)
where rn between (当前页码 - 1) * 每页记录数 + 1 and 当
前页码 * 每页记录数
这里主要是将查询结果集根据指定的规则排序(按照某个字段),
然后在每一行分配一个唯一的行号,最后再根据指定的页码和每页记
录数获取对应的分页数据。
- 2 -
发布者:admin,转转请注明出处:http://www.yc00.com/web/1710656354a1794143.html
评论列表(0条)