一、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;