mysql中having的用法

來源:酷知科普網 1.76W

mysql中,當我們用到聚合函式,如sum,count後,又需要篩選條件時,having就派上用場了,因為WHERE是在聚合前篩選記錄的,having和group by是組合著用的,下面通過例項介紹下用法

操作方法

(01)語法:group by 欄位 having 條件判斷;group by的用法我已經在上一篇經驗中介紹了

(02)還是已員工績效表為例

mysql中having的用法

(03)我們如果就是查詢每個部門成績大於89的員工數,可以這樣寫:SELECT dept,COUNT(user_name) FROM ec_uses WHERE score>89 GROUP BY dept;對這個查詢的過程進行分析,其實是:先查出績效成績大於89的員工記錄,然後再用count聚合函式統計部門的人數,也就是說where是在聚合之前篩選記錄的,那麼如果我們要在聚合之後篩選記錄該如何處理呢?

(04)例如,在上面的基礎上再加一個條件,查詢部門人數大於1的部門那麼我們是先要統計出每個部門的人數,也就是要用count聚合函式,然後再看哪些部門的人數是多於1人的也就是篩選條件是在聚合之後的,這時where已不能滿足使用,我們就需要用到having了sql:SELECT dept,COUNT(user_name) count_tmp FROM ec_uses GROUP BY dept HAVING count_tmp>1;

(05)看執行結果

(06)所以having子句對我們篩選分組後的資料非常方便

(07)值得注意的是having後面跟的條件判斷的欄位必須是聚合函式返回的結果,否則sql會報錯,例如:SELECT dept,COUNT(user_name) count_tmp FROM ec_uses GROUP BY dept HAVING score>1;

mysql中having的用法 第2張
熱門標籤