oracle選擇從m條到n條的記錄

oracle選擇從m條到n條的記錄
[此問題的推薦答案]
如何實現分頁提取記錄方法1:oracle的ROWNUM僞列返回查詢的行序號。 例如要查詢表的前10條記錄,可以使用 select * from tablename where ROWNUM<=10 但是要返回第11-第20條記錄,嘗試以下的語句 select * from tablename where ROWNUM<=20 and ROWNUM>=11; 這個人報錯。返回0條記錄。因爲ROWNUM是僞列,不能用>=條件 使用以下方法可以查詢第11-第20條記錄 select * from (select ROWNUM rn ,t.* from tablename t where ROWNUM<=20) where rn>=11; 方法2:使用分析函數ROW_NUMBER實現分頁 select * from (select ROW_NUMBER() OVER (ORDER BY id) rn,t.* from tablename t) where rn between 11 and 20; 方法3:使用集合運算MINUS實現分頁 select * from tablename where ROWNUM<=20 MINUS select * from tablename where ROWNUM<11; 點評:方法1在查找前幾頁時速度很快。但在數據量很大時,最後幾頁速度比較慢。方法2查詢效率比較穩定,是推薦使用的方法。方法3只適合查詢結果在200行以內的情況,記錄數很多時會導致oracle錯誤,需謹慎使用。 看看這個吧,你就會明白了 
發佈了10 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章