当前位置:Gxlcms > 数据库问题 > Oracle中ROWNUM和ORDER BY的优先级比较

Oracle中ROWNUM和ORDER BY的优先级比较

时间:2021-07-01 10:21:17 帮助过:5人阅读

  公司最近mysql数据库切换oracle,oracle很久没用了有点陌生,刚开始做分页就遇到ROWNUM和ORDER BY的优先级比较。查了资料,网上都说ROWNUM的优先级高于ORDER BY,即先取数据的结果,再对结果进行排序。抱着怀疑的态度写了两天SQL语句,结果有的是ROWNUM的优先级高于ORDER BY,有的是ORDER BY优先级高于ROWNUM。后来得出结论:ROWNUM和ORDER BY的优先级比较是要分情况的。

 

2、正题

2、1 order by 索引,主键时,其中lid是主键,执行结果如下,比较可知结果是一样的。

select lid from test where rownum <=10 order by lid desc;
技术分享
select b.lid from (select a.lid from test a order by a.lid desc) b where rownum<=10;
  技术分享


 

2、2 order by 普通列时,其中amount是普通列,执行结果如下,比较可知结果是不一样的。 

1select amount from test where rownum <=10 order by amount desc;
技术分享
2select b.amount from (select a.amount from test a order by a.amount desc) b where rownum<=10;
  技术分享


 

3、结果

  ROWNUM和ORDER BY的优先级比较是要分情况的,order by 索引,主键时,即可让oracle先按该字段排序,然后再用rownum标号 ;order by 普通列时,先rownum后order by.

 

Oracle中ROWNUM和ORDER BY的优先级比较

标签:

人气教程排行