ORACLE中用rownum分頁(yè)并排序的SQL語(yǔ)句

          以前分頁(yè)習(xí)慣用這樣的SQL語(yǔ)句:

          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)由于該語(yǔ)句會(huì)先生成rownum 后執(zhí)行order by 子句,因而排序結(jié)果根本不對(duì),后來(lái)在GOOGLE上搜到一篇文章,原來(lái)多套一層select 就能很好的解決該問(wèn)題,特此記錄,語(yǔ)句如下:

          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) 評(píng)論(14)  編輯  收藏 所屬分類(lèi): oracle相關(guān)
           
          Comments
          # re: ORACLE中用rownum分頁(yè)并排序的SQL語(yǔ)句
          謝謝,受益匪淺
          Posted @ 2006-11-08 08:19  回復(fù)  更多評(píng)論    
          # re: ORACLE中用rownum分頁(yè)并排序的SQL語(yǔ)句
          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  回復(fù)  更多評(píng)論    
          # re: ORACLE中用rownum分頁(yè)并排序的SQL語(yǔ)句
          見(jiàn)識(shí)過(guò)了
          Posted @ 2007-09-12 11:37  回復(fù)  更多評(píng)論    
          # re: ORACLE中用rownum分頁(yè)并排序的SQL語(yǔ)句[未登錄](méi)
          恩 是正確的 我也這么寫(xiě)的 不過(guò)速度不怎么地 這種寫(xiě)法50W數(shù)據(jù)如果字段多的話(huà)要10多秒 不知哪位高手正點(diǎn)高效的
          Posted @ 2008-12-29 16:18  回復(fù)  更多評(píng)論    
          # re: ORACLE中用rownum分頁(yè)并排序的SQL語(yǔ)句
          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  回復(fù)  更多評(píng)論    
          # re: ORACLE中用rownum分頁(yè)并排序的SQL語(yǔ)句
          將select 后面的*再改寫(xiě)為具體的column name,能好點(diǎn)!
          Posted @ 2009-09-04 17:17  回復(fù)  更多評(píng)論    
          # re: ORACLE中用rownum分頁(yè)并排序的SQL語(yǔ)句
          @tang6704sadasd撒旦撒大大的撒
          Posted @ 2010-03-29 14:58  回復(fù)  更多評(píng)論    
          # re: ORACLE中用rownum分頁(yè)并排序的SQL語(yǔ)句
          @wxy


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

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

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 陕西省| 广州市| 新沂市| 景德镇市| 大英县| 大新县| 杨浦区| 通江县| 中卫市| 旌德县| 上蔡县| 吴旗县| 元朗区| 阳泉市| 潜江市| 那曲县| 镇雄县| 清涧县| 宝鸡市| 宜州市| 开江县| 宝丰县| 萍乡市| 左权县| 施秉县| 渑池县| 云梦县| 温泉县| 会东县| 任丘市| 黔西县| 武宣县| 东兴市| 武安市| 稻城县| 科技| 宜昌市| 日土县| 库尔勒市| 漳平市| 奉新县|