oracle 分页查询 rownum


ROWNUM


可能都知道ROWNUM只适用于小于或小于等于,如果进行等于判断,那么只能等于1,不能进行大于的比较。
ROWNUM是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推。
ROWNUM总是从1开始,不管当前的记录是否满足查询结果,ROWNUM返回的值都是1,如果这条记录的值最终满足所有的条件,那么ROWNUM会递加,下一条记录的ROWNUM会返回2,否则下一条记录的ROWNUM仍然返回1
理解了这一点,就清楚为什么一般的ROWNUM大于某个值或等于某个不为1的值是无法返回结果的,因此对于每条记录的ROWNUM都是1,而ROWNUM1不满足查询的结果,所以下一条记录的ROWNUM不会递增,仍然是1,因此所有的记录都不满足条件。


分页查询格式1

在查询的最外层控制分页的最小值和最大值。查询语句如下:

[sql]  view plain  copy
  1. SELECT * FROM   
  2. (  
  3. SELECT A.*, ROWNUM RN   
  4. FROM (SELECT * FROM TABLE_NAME) A   
  5. )  
  6. WHERE RN BETWEEN 21 AND 40  


分页查询格式2

[sql]  view plain  copy
  1. SELECT * FROM   
  2. (  
  3. SELECT A.*, ROWNUM RN   
  4. FROM (SELECT * FROM TABLE_NAME) A   
  5. WHERE ROWNUM <= 40  
  6. )  
  7. WHERE RN >= 21  


分页查询格式3
考虑到多表联合的情况,如果不介意在系统中使用HINT的话,可以将分页的查询语句改写为:

[sql]  view plain  copy
  1. SELECT /*+ FIRST_ROWS */ * FROM   
  2. (  
  3. SELECT A.*, ROWNUM RN   
  4. FROM (SELECT * FROM TABLE_NAME) A   
  5. WHERE ROWNUM <= 40  
  6. )  
  7. WHERE RN >= 21  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值