程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 用rownum先排序後分頁,rownum排序分頁

用rownum先排序後分頁,rownum排序分頁

編輯:Oracle教程

用rownum先排序後分頁,rownum排序分頁


  今天突然想到rownum可以解決分頁問題,於是做了各種實驗,找個幾個文章,最後有了一定成果。

  現有表tablename,含有字段showorder,要求提取showorder的第11行到20行數據。

  用語句select rownum r,a.* from tablename a order by showorder進行查詢的時候會發現結果集中rownum是在排序之前賦的值,因此如果需要按showorder提前的話應該先將tablename按showorder排序,將排序後的結果集按rownum提取。

  用語句SELECT ROWNUM r, a.* FROM (select * from tablename order by showorder) a WHERE ROWNUM <= 20 可以查出前20條,但如果過濾條件變成rownum<=20 and rownum >=10,就會發現結果集一條數據都沒有,因為rownum是提取數據,將數據操作完成之後再進行標記行號,關於這點,有個作者寫的很好http://blog.csdn.net/greenappple/article/details/6872660,大家可以看看。

  剩下的操作是將標記好行號的前20條數據提取後十條。

  SELECT *  FROM (SELECT ROWNUM r, a.* FROM (select * from tablename order by showorder) a WHERE ROWNUM <= 20 )  WHERE r >= 11;

  上面的語句用plsql執行時用了0.078秒,等同於plsql查詢上千行的表時只查處了前十條的時間。

  網上有很多好文章寫著塊的,此處只記載了適用於我的方面。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved