Oracle rownum记忆


Oracle的rownum是伪列,它的原理网上面有很多,可是我们还是很容易混乱,其实我们对于它的原理了解一下就好了,重要的是使用,所以我们只要能够确保自己在使用的时候不出错就好了,但是如果我们又对它的原理一点也不清楚又不行,因此我们还需要通过一种方式来记住它的特殊性,我们用一种较为简单的方法来记住它的特殊之处就行了。

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;这样来做就没有问题了。

更多Oracle相关信息见Oracle 专题页面 http://www.bkjia.com/topicnews.aspx?tid=12

相关内容