Oracle分页
来源:互联网 发布:js数组去重方法 编辑:程序博客网 时间:2024/06/15 14:36
Oracle分页相比较MySQL麻烦一点,但是也不复杂
首先学习分页之前需要知道一个东西,那就是ROWNUM:
ROWNUM:它是一个伪列,用来给查询返回的行编号,其实也就是行号,它是从1开始计的。
其次,非常重要的一点,ROWNUM数值起初是空的,只有在查询到的数据满足选择条件时才会赋值。什么意思呢,
举个例子:SELECT ROWNUM, ename FROM EMP WHEREROWNUM > 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分页
- Oracle分页
- Oracle分页
- oracle分页
- oracle分页
- oracle分页
- oracle分页
- oracle分页
- oracle分页
- Oracle分页
- oracle分页
- Oracle分页
- Oracle分页
- Oracle 分页
- Oracle 分页
- oracle-分页
- Oracle分页
- ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 11 编写简单的消息发布器和订阅器 (C++)
- NSCTF crypto50:
- CSS 中的内联元素、块级元素以及display的各个属性的特点
- java null与 “”空字符的区别
- 数据结构之链式栈的一些基本操作
- Oracle分页
- android 删除整个文件夹里面的文件
- 小程序更新了开发环境不再限制白名单
- linux下 awk内置变量使用介绍
- event loop到底做了什么
- 表达式和基本语句的规范
- 百练 6252:带通配符的字符串匹配
- Python机器学习算法——决策树
- 7月工作小结