Rownum搭配Order by

  • 43374
  • 0

摘要:Rownum搭配Order by

話說我自從學習.net以來,一直搭配的資料庫就是SqlServer,也因為之前公司都用Sql,讓我也沒機會接觸到Oracle,最近換到這家新公司,它們都是用Oracle比較多,就在前幾天,在寫一個報表時。


通常我們要取出前幾筆資料,在Sql會下這樣的語法:
                                  select top xxx.......


而我發現在Oracle沒有top可以用=.= ,便上網去找了一下,原來是使用rownumㄚ!
很直覺的,我就下了以下的語法:
                                 select xxx from xxx where rownum<=xx


嗯,測試了一下,沒有錯,繼續寫程式,但忽然發現,當我加上order by條件居然筆數會整個亂掉,昨天就立刻請教了一下lolota,原來,在Oracle中,rownum會比group by、order by更先執行,因此要用子查詢就ok啦

   select xxx from (select xxx from xxx order by xxx) where rownum<=xx

Oracle官網有詳細解說,我居然都沒發現=.=
http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html