having 和where的区别

1.where 条件中不能使用组函数,having 可以。
2.在输入顺序上,where先过滤后分组
(比如select deptno,avg(sal)
from emp
where deptno=10
group by deptno;
),having先分组再过滤,
(比如select deptno,avg(sal)
from emp
group by deptno
having deptno=10;)
要根据实际情况选择
3.如果两个可以通用,从sql优化的角度上看,尽量使用where.(where先过滤掉无关数据,对执行效率有大幅提高)

例子
查询平均工资大于2000的部门
select deptno,avg(sal)
from emp
group by deptno
having ave(sal) >2000

上一篇:调度器3——PELT算法下util_avg的增速和减速


下一篇:Redis变慢原因排查