Oracle中rownum与order by的执行顺序 正确的写法应该是:先order by,先包一层查询,再赋rownum值

发布时间 2023-07-12 15:11:21作者: sunny123456

Oracle中rownum与order by的执行顺序 正确的写法应该是:先order by,先包一层查询,再赋rownum值
原文链接:https://blog.csdn.net/u013456370/article/details/122366975

  1. select id,createdate,finvoutype from nc_ext_fa_ls_pz_hzdoc doc
  2. where doc.company = '3000004' and doc.finvoutype = 'YUFZXD'
  3. and doc.gxmlflag = '20220107'
  4. and rownum <=10 order by doc.createdate

第一种方法:id:6321 没取值出来;

  1. select id from (
  2. select id from nc_ext_fa_ls_pz_hzdoc doc
  3. where doc.company = '3000004' and doc.finvoutype = 'YUFZXD'
  4. and doc.gxmlflag = '20220107'
  5. order by doc.createdate) where rownum <=10

第二种方法: id:6321 能取值出来;

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

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