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錯誤,需謹慎使用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章