对Oracle的rownum生成时机的理解

在Oracle中,rownum和rowid是平时经常用到的。比如rownum经常用于分页查询,rowid用于排重或者快速定位到记录。

对rownum跟order by配合下的生成时机一直没有具体研究过,只是用的时候如果不确定就用数据测试一下,这次记录一次测试过程。

TEST表数据如下,

执行如下sql,

select rownum, b.* 
from test b 
where b.num is not null 

结果如下

再执行如下sql,

select rownum, b.* 
from test b 
where b.num is not null 
order by b.str

结果如下

比较两个结果可知,rownum在where条件后即生成,且在order by之前。 

原文地址:https://www.cnblogs.com/hello-yz/p/9994113.html