SQL查詢語句(where、jion、limit、group by、having等等)執行先后順序


一個查詢語句同時出現了where,group by,having,order by的時候,執行順序和編寫順序是:

1.執行where xx對全表數據做篩選,返回第1個結果集。

2.針對第1個結果集使用group by分組,返回第2個結果集。

3.針對第2個結果集中的每1組數據執行select xx,有幾組就執行幾次,返回第3個結果集。

4.針對第3個結集執行having xx進行篩選,返回第4個結果集。

5.針對第4個結果集排序。

通過一個順口溜總結下順序:我(W)哥(G)是(SH)偶(O)像。按照執行順序的關鍵詞首字母分別是W(where)->G(Group)->S(Select)->H(Having)->O(Order),對應漢語首字母可以編成容易記憶的順口溜:我(W)哥(G)是(SH)偶(O)像

 

  • 1.查詢中用到的關鍵詞主要包含六個,並且他們的順序依次為 select--from--where--group by--having--order by

其中select和from是必須的,其他關鍵詞是可選的,這六個關鍵詞的執行順序 與sql語句的書寫順序並不是一樣的,而是按照下面的順序來執行

from:需要從哪個數據表檢索數據

where:過濾表中數據的條件

group by:如何將上面過濾出的數據分組

having:對上面已經分組的數據進行過濾的條件

select:查看結果集中的哪個列,或列的計算結果

order by :按照什么樣的順序來查看返回的數據

  • 2.from后面的表關聯,是自右向左解析 而where條件的解析順序是自下而上的。

也就是說,在寫SQL語句的時候,盡量把數據量小的表放在最右邊來進行關聯(用小表去匹配大表),而把能篩選出小量數據的條件放在where語句的最左邊 (用小表去匹配大表)

其他參考資源:
http://www.cnblogs.com/huminxxl/p/3149097.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM