Oracle分页实现原理
2017-12-14 11:30
344 查看
参考于:http://blog.csdn.net/anxpp/article/details/51534006
Oracle中的表,除了我们建表时设计的各个字段,其实还有两个字段(此处只介绍2个),分别是ROWID(行标示符)和ROWNUM(行号),即使我们使用DESCRIBE命令查看表的结构,也是看不到这两个列的描述的,因为,他们其实是只在数据库内部使用的,所以也通常称他们为伪列(pseudo column)。
Oracle分页语句:
select * from temp > 2
该sql查询不到任何信息,因为oracle 中数据行rownum是中1 开始的, 既然找到了原因,解决方法也就很明显了,我们只要将行号查询出来生成一个结果集,然后再从这个结果集中,选择行号大于我们设定的那个值就可以了,上面的分页查找正确的写法应该是这样:
内层控制需要查询多少行的数据
外层 控制 从内层查询显示到的数据最小行数
Oracle中的表,除了我们建表时设计的各个字段,其实还有两个字段(此处只介绍2个),分别是ROWID(行标示符)和ROWNUM(行号),即使我们使用DESCRIBE命令查看表的结构,也是看不到这两个列的描述的,因为,他们其实是只在数据库内部使用的,所以也通常称他们为伪列(pseudo column)。
对于分页,我们只要想办法可以查询到从某一起始行到终止行就可以的,分页的逻辑可以放到程序里面。 于是,我们理所当然会想到如下语句查询第2页的数据(每页2条数据,页码从1开始,所以起始行的行号为 (页码-1)*每页长度+1=3,终止行的行号为 页码*每页长度=4)。
Oracle分页语句:
select * from temp > 2
该sql查询不到任何信息,因为oracle 中数据行rownum是中1 开始的, 既然找到了原因,解决方法也就很明显了,我们只要将行号查询出来生成一个结果集,然后再从这个结果集中,选择行号大于我们设定的那个值就可以了,上面的分页查找正确的写法应该是这样:
内层控制需要查询多少行的数据
外层 控制 从内层查询显示到的数据最小行数
> Select 字段1,字段2 From 表名( select rownum as rn, a.* from a where rownum > <= 5 )aa where aa.rn >1
相关文章推荐
- 分页技术原理与实现(二)——Java+Oracle代码实现
- 分页技术原理与实现(二)——Java+Oracle代码实现
- mySql与oracle分页技术原理与实现
- 分页技术原理与实现(二)——Java+Oracle代码实现
- oracle rownum 原理及分页查询实现
- 分页技术原理与实现之Java+Oracle代码实现分页(二)
- oracle实现存储过程的分页并用java代码调用存储过程
- 使用SSH实现分页的详细demo(附带数据库,MYSQl和Oracle)
- PHP&MYSQL分页原理及实现
- Struts+Oracle分页显示数据的实现
- Oracle分页之三:利用PagerView来实现无刷新GridView
- ASP.NET调用Oracle分页存储过程并结合ASPnetpager分页控件 实现分页功能
- PHP实现的oracle分页函数实例
- Oracle快照原理及实现总结
- 在mybatis中实现oracle分页和模糊查询
- Oracle数据块实现原理深入解读
- Hibernate的setFirstResult,setMaxResults实现数据库分页原理
- Oracle的rownum原理和使用(分页查询)
- java ssm框架实现分页功能 (oracle)
- oracle用存储过程实现分页