共计 874 个字符,预计需要花费 3 分钟才能阅读完成。
Oracle 的分页
Oracle 支持一个关键字 ROWNUM,ROWNUM 是一个伪列,该列不存在于任何一张表中,但是每张表都可以查询该列。
而该列在结果集的中值是结果集中每条记录的 ” 行号 ”ROWNUM 给结果集编号是在查询的过程中进行的,只要可以从表中查询出一条记录,该记录的行号就会作为这条记录 ROWNUM 字段的值。
ROWNUM 从 1 开始递增。由于 ROWNUM 从 1 开始,所以在第一次查询表中数据进行编号时,不要使用 ROWNUM 做大于 1 以上的数字判断,否则查询不到数据:
1、示例
使用 ROWNUM 做大于 1 的判断,无结果
-- 不能对 ROWNUM 使用 >(大于或等于 1 的数值)、>=(大于或等于 2 的数值)、=(大于 1 的数值),否则无结果
-- 所以直接用只能从 1 开始
-- rownum >1 没有记录,因为第一条不满足去掉的话,第二条的 rownum 又成了 1,所以永远没有满足条件的记录。
SELECT ROWNUM, il.* FROM installation il WHERE ROWNUM > 1
2、三种分页方式
2.1 分页一
select *
from (select a1.*, rownum rn
from (select * from installation) a1
where rownum <= 5)
where rn >= 2
2.2 分页二
select a1.*
from (select il.*, rownum rn from installation il where rownum <= 5) a1
where rn >= 3;
2.3 分页三
select a1.*
from (select il.*, rownum rn from installation il) a1
where rn between 3 and 5;
在使用过程中,发现第三种分页方式效率明显太差,原因下回再分析,实际项目中,一般都使用第一种方法。
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-11/148848.htm
正文完
星哥玩云-微信公众号