SQL中rownum和order by的執行順序的問題
在一個SQL中,如果同時使用rownum
和order by
,會有一個先後順序的問題。
比如select id1,id2 from t_tablename where rownum<3 order by c_date desc
,這個語句會先從結果集中取前三條記錄,再對這3天記錄按日期排序。如果設計者向先對日期排序,再取前三天記錄,那麼就不會得到正確的結果。
所以rownum
和order by
一起使用的時候一定要注意的執行順序的問題。
這句可以這樣實現
select id1,id2 from (select id1,id2 from t_tablename order by c_date desc) where rownum<3
用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查詢上千行的表時只查處了前十條的時間。
網上有很多好文章寫著塊的,此處只記載了適用於我的方面。
相關文章
- sql中的or與and的執行順序問題SQL
- SQL語句中的AND和OR執行順序問題SQL
- mysql order by 和 group by 順序問題MySql
- Sql執行順序SQL
- GROUPBY 和開窗函式執行順序的問題函式
- SQL 語句的執行順序SQL
- SQL 執行順序 你懂的SQL
- mysql 中sql語句關鍵字的書寫順序與執行順序MySql
- 關於defer執行順序問題
- sql mysql 執行順序 (4)MySql
- SQL語句執行順序SQL
- SQL語句各子句的執行順序SQL
- 可看執行順序的xplan.package.sqlPackageSQL
- js基礎進階–promise和setTimeout執行順序的問題JSPromise
- SQL Server SQL語句執行順序SQLServer
- C++輸出流cout的執行順序問題C++
- 【Oracle】where條件執行順序(上篇的問題延伸)Oracle
- DISTINCT 和 TOP合用的執行順序
- unittest.TestCase中測試用例執行順序問題
- JavaScript的執行順序JavaScript
- SQL 查詢語句的執行順序解析SQL
- Hive SQL語句的正確執行順序HiveSQL
- SQL Server中SELECT語句執行順序解析SQLServer
- Jmeter的元件作用域和執行順序JMeter元件
- 關於觸發器在行級和語句級的執行順序問題觸發器
- sql select語法執行順序SQL
- 你瞭解一條sql的執行順序嗎SQL
- SQL語句中SELECT語句的執行順序SQL
- connect by與where條件執行順序問題
- wait和notify在鎖競爭中的執行順序AI
- Qt中連線到同一signal的多個slots的執行順序問題QT
- Unity3D中指令碼的執行順序和編譯順序Unity3D指令碼編譯
- Java for迴圈中語句執行的順序Java
- oracle實用sql(15)--檢視SQL執行計劃的順序OracleSQL
- UITableView停止載入中的動畫的順序問題UIView動畫
- 關於 Promise 的執行順序Promise
- Spring Aop的執行順序Spring
- CSS規則的執行順序CSS