Oracle中的rownum不能使用大于>的问题(二)

2014-11-24 18:41:28 · 作者: · 浏览: 1
um,id,age,name from loaddata where rownum < 3;


ROWNUM ID AGE NAME
------- ------ --- ------
1 200001 22 AAA
2 200002 22 BBB



综上几种情况:


可能有时候需要查询rownum在某区间的数据,从上可以看出rownum对小于某值的查询条件是认为true的。


rownum对于大于某值的查询条件直接认为是false的,但是可以间接的让它转为认为是true的,那就必须使用子查询。


例如要查询rownum在第二行到第三行之间的数据,包括第二行和第三行数据,那么只能写以下语句,先让它返回小于等于三的记录行,


然后在主查询中判断新的rownum的“别名列”大于等于二的记录行。但是这样的操作会在大数据集中影响到检索速度。



SQL>select * from (select rownum no,id,age,name from loaddata where rownum <= 3 ) where no >= 2; --必须是里小外大


ROWNUM ID AGE NAME
------- ------ --- ------
2 200002 22 BBB
3 200003 22 CCC



也可以用这种方法实现:


SQL>select rownum,id,age,name from loaddata where rownum < 4
minus
select rownum,id,age,name from loaddata where rownum < 2


ROWNUM ID AGE NAME
------- ------ --- ------
2 200002 22 BBB
3 200003 22 CCC