mysql中先執行where還是group by
阿新 • • 發佈:2021-01-06
mysql中這些關鍵字是按照如下順序進行執行的:Where, Group By, Having, Order by。
首先where將最原始記錄中不滿足條件的記錄刪除(所以應該在where語句中儘量的將不符合條件的記錄篩選掉,這樣可以減少分組的次數)
然後通過Group By關鍵字對檢視進行分組
接著根據Having關鍵字後面指定的篩選條件,將分組後不滿足條件的記錄篩選掉
最後按照Order By語句對檢視進行排序,這樣最終的結果就產生了。
having子句可以讓我們篩選成組後的各種資料,where子句在聚合前先篩選記錄,也就是說作用在group by和having子句前。而having子句在聚合後對組記錄進行篩選。
having可以用聚合函式,如having sum(money) > 1000
- SELECT user_type,is_admin ,SUM(id) FROM saut_m_user
- WHERE id > 100
- GROUP BY user_type,is_admin
- HAVING SUM(status) < 500
-
ORDER BY is_admin ASC