在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之前。