having和where区别:
having是在分组后对数据进行过滤
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合
具体实例说明:
区别1
where是从数据表中的字段直接进行的筛选的。
having是从 前面筛选的字段再筛选
eg: select goods_price,goods_name from goods having goods_price > 100
等价于
select goods_price,goods_name from goods where goods_price > 100
select goods_name,goods_number from goods having goods_price > 100
// 报错!!!因为前面并没有筛选出 goods_price 字段
区别2
having子句中可以使用字段别名,而where不能使用
区别3
having能够使用统计函数,先分组,再判断(having),但是where不能使用