Oracle中rownum与order by的执行顺序

执行顺序
Oracle会先设置行的rownum,再进行order by
执行顺序:rownum > order by

正确的写法应该是先order by,先包一层查询,再赋rownum值

select *
from (select rownum rno, t1.*
from (select *
from (select sysdate + level level_ from dual connect by level <= 10) t
order by level_ desc) t1) t2
where t2.rno <= 3

原文地址:https://www.cnblogs.com/cinemaparadiso/p/14510637.html