Oracle rownum记忆

2014-11-24 19:01:03 · 作者: · 浏览: 28

1.rownum它不可以使用任何的表作为自己的前缀,因为它并不是任何表里面的一个固定的字段,它只是查询结果集的一个顺序。


2.它总是从1开始,进行判断的时候也是从1开始的。


所以我们可以这样来记忆:一个查询语句是否会成立有一个很简单的判断标准,就是“对1成立,查询成立;对1不成立,查询不成立”;


比如我们要查询emp表的前5条记录我们可以这样:select * from emp where rownum<=5;能不能查询出来结果呢?我们按照上面的那句话来判断,因为1<=5所以成了,所以可以查询出来结果。


但是如果我们要查询出来3到5条记录,那么如果我们这样写:select * from emp where rownum>3 and rownum<5;这样我们还是用上面的那句话来判断,1<5成立,但是1>3就不成立了,所以结果就是不成了,所以我们得不到结果。


因此如果我们要得到结果的话,我们需要使用子查询来处理了select * from (select rownum rn,emp.* from emp where rownum<5) where rn>3;这样来做就没有问题了。