Oracle分页
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle分页,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1461字,纯文字阅读大概需要3分钟。
内容图文
Oracle分页相比较MySQL麻烦一点,但是也不复杂
首先学习分页之前需要知道一个东西,那就是ROWNUM:
ROWNUM:它是一个伪列,用来给查询返回的行编号,其实也就是行号,它是从1开始计的。
其次,非常重要的一点,ROWNUM数值起初是空的,只有在查询到的数据满足选择条件时才会赋值。什么意思呢,
举个例子:SELECT ROWNUM, ename FROM EMP WHERE ROWNUM > 5;
这句sql是查询不到数据的,why? because当查询到第一条数据时,ROWNUM还是空的,所以where条件是不满足的,所以第一条数据不符合条件,ROWNUM不会赋值为1,依然为空,以此类推,直到查询完成也没有符合条件的数据,最后返回空。
所以,在Oracle分页时,需要先给数据编号,即先查ROWNUM,然后把查询到的数据当作一张表(即写在from子句中),再用需要查询的数据的ROWNUM的范围再查询一次即可。
因此:Oracle分页需要两步:
1.编号
2.取数据
例:
SELECT * FROM (SELECT ROWNUM r, column1, column2, ... FROM table) WHERE r >= start AND r <= size
或者:
SELECT * FROM (SELECT ROWNUM r, column1, column2, ... FROM table) WHERE r BETWEEN start AND size
但是,有时候我们在分页查询的时候可能有新的数据插入,所以可能导致第一页之后的查询出现重复的列,所以一般在分页之前我们会加上一步排序,防止数据重复:
例:SELECT * FROM ( --取数据
SELECT ROWNUM r, t.* FROM ( --编号
SELECT column1, column2, ... FROM table ORDER BY column --排序
) t
) WHERE r BETWEEN start AND end;
最后再介绍一下分页的两个小算法:
page:页数
pageSize:每页显示的行数
start=(page - 1) * pageSize + 1
由于在Hibernate框架中,数据下标从0开始,所以start=(page - 1) * pageSize
内容总结
以上是互联网集市为您收集整理的Oracle分页全部内容,希望文章能够帮你解决Oracle分页所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。