???? 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