Oracle分页查找

分页查找是为了在大部分情况下,不需要查找出全部的数据,只需要显示部分即可。因为查找出全部的数据会占用很大的服务器资源,十分影响性能,而且没这个必要。比如微博留言,如果一个微博有几千条留言,完全没必要全部加载出来,只加载前面十几条,用户刷到后面再加载十几条就可以,这就是分页查询的作用。

Oracle分页查询:

SELECT * FROM   
(  
SELECT t.*, ROWNUM RN   
FROM (SELECT * FROM t_role) t   
WHERE ROWNUM <= 40  
)  
WHERE RN >= 21  

上面是最简单的一个分页查找,查找的是行数大于等于21,小于等于40的数据。

里面有三个select,

第一个select是为了将表中的数据全部查找出来,以便给下一个select查找出总行数,查找的子表用别名t

第二个select,不仅得查找出表中的全部数据t.*,还得查找出表中的一个新列,ROWNUM,会给每一行按顺序从1开始标记,同时确定了分页查询的上限,ROWNUM用别名RN代替,这是必须的一个操作,因为在第三个SELECT查询的时候会利用RN来确定分页查询的下限。

第三个select,就是最终查找的结果,前面主要是为了获得ROWNUM并确定上限,这里确定了下限,最终的查找结果会有RN,因为前面的子表里会有列RN,

如果不想要的话可以选择自己想要的结果,如:

SELECT ROLE_ID, ROLE_NAME, NOTE FROM   
(  
SELECT t.*, ROWNUM RN   
FROM (SELECT * FROM t_role) t   
WHERE ROWNUM <= 40  
)  
WHERE RN >= 21  

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值