给结果集分页

为了便于查询网页中的数据,常常要分页显示。如:要求员工表按工资排序后一次只显示5行数据,下次再显示接下来的5行,以下以第二页数据(6到10行)为例进行分页。

SQL代码如下:

SELECT rn, ename, sal
  FROM (SELECT ROWNUM AS rn, ename, sal
          FROM (SELECT ename, sal FROM emp WHERE sal IS NOT NULL ORDER BY sal)
         WHERE ROWNUM <= 10)
 WHERE rn >= 6;

以上的SQL需要嵌套两次,你也可以先用row_number()生成序号,再过滤,这样就只需要嵌套一次。

SELECT rn, ename, sal
  FROM (SELECT ROW_NUMBER() OVER(ORDER BY sal) AS rn, ename, sal
          FROM emp
         WHERE sal IS NOT NULL)
 WHERE rn BETWEEN 6 AND 10;

这个语句比较简单,但因为分页语句的特殊性,在调用PLAN时可能会受到分析函数的影响,有些索引或PLAN(如:first_rows)不能用。所以建议使用第一种分页方式,把第一种分页方式当作模版,然后套用。

转载于:https://www.cnblogs.com/minisculestep/p/4909581.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值