1. 程式人生 > 資料庫 >mysql中先執行where還是group by

mysql中先執行where還是group by

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

  1. SELECT user_type,is_admin ,SUM(id) FROM saut_m_user
  2. WHERE id > 100
  3. GROUP BY user_type,is_admin
  4. HAVING SUM(status) < 500
  5. ORDER BY is_admin ASC