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

          結(jié)果發(fā)現(xiàn)由于該語句會先生成rownum 后執(zhí)行order by 子句,因而排序結(jié)果根本不對,后來在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 工作日志 閱讀(27926) 評論(14)  編輯  收藏 所屬分類: oracle相關(guān)
           
          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數(shù)據(jù)如果字段多的話要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語句
          @榆戀蝶
          你的不可以的。你可以多做些數(shù)據(jù),然后你會發(fā)現(xiàn)第一頁和第二的數(shù)據(jù)有什么區(qū)別
          Posted @ 2013-08-15 18:41  回復  更多評論    
          # re: ORACLE中用rownum分頁并排序的SQL語句
          @Ringer'
          這個其實是可以的 現(xiàn)在oracle10g已經(jīng)可以了 并且無需在外面套那么多 一層也可以搞定
          Posted @ 2013-09-03 17:08  回復  更多評論    
           

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


          網(wǎng)站導航:
           
           
          主站蜘蛛池模板: 武川县| 平乐县| 岑巩县| 元江| 松原市| 贵州省| 咸丰县| 中超| 政和县| 定边县| 宁都县| 遵义县| 康保县| 九寨沟县| 麦盖提县| 安阳市| 龙口市| 上蔡县| 遂川县| 宁津县| 吉林市| 建昌县| 裕民县| 贡觉县| 永泰县| 华安县| 永济市| 洛隆县| 伊春市| 南开区| 珠海市| 汾西县| 海晏县| 四会市| 咸阳市| 张家川| 香港| 新疆| 吕梁市| 东丰县| 海宁市|