1. 程式人生 > >mysql 使用count(),sum()等作為條件查詢

mysql 使用count(),sum()等作為條件查詢

在開發時,我們經常會遇到以“累計(count)”或是“累加(sum)”為條件的查詢。比如user_num表:
id user num
1 a 3
2 a 4
3 b 5
4 b 7
  例1:查詢出現過2次的user。   往往初學者會錯誤地認為在where 語句裡直接使用count()演算法,很顯然這個想法是錯誤的,count()方法並不能被用在where子句中,為了解決問題,我們可以在group by子句後面使用HAVING來做條件限制。   錯誤做法:select * from user_num where count(user)>=2 group by user;
  正確做法:select * from user_num group by user HAVING count(user)>=2 ;   解釋說明:HAVING 與 WHERE 類似,可用來決定選擇哪些記錄。HAVING 子句在SELECT語句中指定,顯示哪些已用 GROUP BY 子句分組的記錄。在GROUP BY組合了記錄後, HAVING會顯示 GROUP BY 子句分組的任何符合 HAVING 子句的記錄。   例2:查詢單一使用者的num總和大於10的使用者。   有前面的經驗,把sum()方法寫在HAVING子句中。   正確做法:select * from user_num group by user HAVING sum(num
)>10 ;

  注意:一個HAVING子句最多隻能包含40個表示式,HAVING子句的表示式之間可以用AND和OR分割。

sql語句的執行順序:

(1)from   選取資料來源;

(2)where  篩選資料來源;

(3)  group  by 將篩選的資料來源分組;

(4)使用聚集函式計算;

(5)having 篩選分組的資料;

(6)計算表示式;

(7)order by 排序;


參考:1.http://blog.csdn.net/ivan820819/article/details/46877597

   2.http://blog.csdn.net/qq_32345239/article/details/52288013