Oracle中ROWNUM和ORDER BY的優先級比較


1、前言

  公司最近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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM