Oracle分页查询语句

声明:此文章纯属自己的观点,理解程度不同,但保证文章的正确性,以供雅俗共赏


先说一下mysql的分页查询

mysql分页语句:select 要查询的列 from 表名称 limit ?,?
该SQL语句的意思是:从第几行开始,然后取多少行,mysql中,第一行的下标是0
例如我要取数据库中的前10行数据,我的SQL语句应该这样写
select * from user limit 0,10;从0坐标开始,查询10行数据,总共10行数据   注意:坐标是从数据库的表中哪行数据开始的位置,后面的行数才是

你总共查询的数据的个数,包括你开始时的 坐标的那条数据


oracle中有一个rownum的伪列,因为该rownum伪列不支持>号,所以向下面的这种条件查询语句是行不通的,但是它又不像SQL语句那样可以使用

select * from limit ?,?   limit 关键字在Oracle中也是没有的,那我们如何分页查询Oracle中的一张表的数据呢?


分析:我们可以给要分页的表增加一个列,该列显示表数据每行的行数,如rownum伪列就有这项功能,这样增加的列名就不是伪列,而是

一个查询结果的表数据中的一个新列


下面开始步骤:

打开Oracle数据库,复制下面的查询语句即可看到真实的效果,如果你喜欢看字理解,那更好了,截图的图片太大了上传不了

select * from emp;


先看下要分页表中的所有的数据



以该表的数据为基础增加一个新的列rw,获得一个新的表数据

select rownum rw ,e.* from (select * from emp) e where rownum <=10;




将获得的这个有rw列的表做为查询对象进行分页数据的获取


select * from (select rownum rw ,e.* from (select * from emp) e where rownum <=10
 ) t where t.rw>=1;



这样就查询到了从零坐标开始一直到第九条数据,因为行号是<10的所以只有9条数据


这样的话就完成了分页查询,以后只需要修改开始的坐标rw,和结束的行号就可以了,所以总结查询一张Oracle的分页数据的语句如下


select * from (select rownum rw ,e.* from (select * from emp) e where rownum <=结束行号

 ) t where t.rw>=开始行号




另附开始和结束行号的计算:



已知条件
pageNo:当前的页码
pageSize:每页记录数


未知条件
startNum:开始行号
endNum:结束行号




pageNo      pageSize       startNum      endNum
   1            5              0            6          
   2            5              5            11
   3            5              10           16
   
   startNum = (pageNo - 1)*pageSize;
   endNum = pageNo*pageSize + 1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值