ORACLE中用rownum分頁并排序的SQL語句

          以前分頁習慣用這樣的SQL語句:

          select * from

          (select t.*,rownum row_num from mytable t order by t.id) b

          where b.row_num between 1 and 10

          結果發現由于該語句會先生成rownum 后執行order by 子句,因而排序結果根本不對,后來在GOOGLE上搜到一篇文章,原來多套一層select 就能很好的解決該問題,特此記錄,語句如下:

          select * from

          (select a.*,rownum row_num from

          (select * from mytable t order by t.id desc) a

          ) b where b.row_num between 1 and 10

          posted on 2005-02-21 17:15 工作日志 閱讀(27925) 評論(14)  編輯  收藏 所屬分類: oracle相關
           
          Comments
          # re: ORACLE中用rownum分頁并排序的SQL語句
          謝謝,受益匪淺
          Posted @ 2006-11-08 08:19  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          it's great! your solution is the best one i have seen until now.thank u very much and reaaly appreciate you generation!
          Posted @ 2006-11-23 13:24  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          見識過了
          Posted @ 2007-09-12 11:37  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句[未登錄]
          恩 是正確的 我也這么寫的 不過速度不怎么地 這種寫法50W數據如果字段多的話要10多秒 不知哪位高手正點高效的
          Posted @ 2008-12-29 16:18  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          select * from

          (select a.*,rownum row_num from

          (select * from mytable t order by t.id desc) a
          where rownum<=10

          ) b where b.row_num >= 1
          Posted @ 2009-03-04 11:22  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          將select 后面的*再改寫為具體的column name,能好點!
          Posted @ 2009-09-04 17:17  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          @tang6704sadasd撒旦撒大大的撒
          Posted @ 2010-03-29 14:58  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          @wxy


          很對
          Posted @ 2010-06-27 12:11  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句[未登錄]
          其實你可以再試試,第一種根本不是按照rownum排序的
          Posted @ 2010-08-04 00:32  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句[未登錄]
          非常感謝。
          Posted @ 2011-07-10 17:12  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          @Sam
          呵呵
          Posted @ 2011-07-10 21:25  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          order字句可以直接用于
          select * from
          (
          select t.*,rownum row_num from mytable t order by t.id desc)

          ) where row_num between 1 and 10
          我怎么可以呢?剛剛測試了下
          Posted @ 2013-03-27 13:40  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          @榆戀蝶
          你的不可以的。你可以多做些數據,然后你會發現第一頁和第二的數據有什么區別
          Posted @ 2013-08-15 18:41  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          @Ringer'
          這個其實是可以的 現在oracle10g已經可以了 并且無需在外面套那么多 一層也可以搞定
          Posted @ 2013-09-03 17:08  回復  更多評論    
           

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          主站蜘蛛池模板: 仁怀市| 潢川县| 灌阳县| 沧源| 确山县| 桑植县| 铁岭县| 佛冈县| 建瓯市| 胶州市| 白银市| 吉首市| 安仁县| 乐安县| 镇平县| 漳平市| 辽阳市| 兴化市| 绥芬河市| 蓝田县| 庄河市| 玉门市| 江油市| 澄迈县| 雷州市| 山东省| 台东市| 深水埗区| 通山县| 马尔康县| 德昌县| 兴城市| 措勤县| 乐平市| 石屏县| 虹口区| 肥东县| 娄底市| 陆河县| 惠东县| 丹棱县|