用法的区别:
1、having先分组后计算,where反之。
2、having后面可以跟聚合函数,where不可以。
应用范围的区别:
1、where ···(只能对分组前的属性进行筛选)
2、having ···(只能对分组后的每个组的整体属性进行筛选,用聚合函数体现)
例子:
select sum(num) as rmb from order where id>10
--只有先查询出id大于10的记录才能进行聚合语句
--显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000
在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。相反,HAVING子句可以让我们筛选成组后的各组数据。