一、having與where的區別
where | having |
可以與update、delete、select一起使用 | 只能與select一起使用 |
在group by之前使用 | group by之后使用 |
不一定要與group by一起使用 | 必須與group by一起使用 |
對表中的數據進行篩選 | 對聚合后的數據進行篩選 |
與單行數據的函數upper,lower等一起使用 | 與作用於多行的函數count、sum一起使用 |
二、條件查詢
題目:查詢出enbale之和大於10的modifier與enable總量
1、使用having
having在聚合后對記錄進行篩選,表里面可以不存在此記錄,where作為條件查詢真實的表或者查詢出來的表中必須有記錄
select modifier,sum(`enable`) as total from api_info group by modifier having total>10
此處的having如果換成where就會報錯
2、使用聯合查詢
SELECT DISTINCT (a.modifier), a1.total FROM api_info a RIGHT JOIN ( SELECT modifier, SUM(`enable`) AS total FROM api_info GROUP BY modifier ) AS a1 ON a.modifier = a1.modifier WHERE total > 10;