sql的执行顺序
1.from
2.where
3.group by
4.聚合函数 count(), sum(), min() 注意聚合函数 是在group by 之后having之前
5. having
6.select
7.order by
1. 使用角度
说起它俩的区别, 不得不说起聚合函数; where是在聚合函数之前执行, having是在聚合函数之后执行
2. 具体实现
(1). 相同点
select id, name,age from stu where age>18;
select id, name,age from stu having age>18;
可用having的原因是已经筛选出age字段,在这种情况下是和where效果一样。
(2)不同点 – 只能使用where 不能使用having
select id, name from stu having age>18; 这种时候使用having就会报错(unknown column ‘age’ in having)。 所以这种情况
(3)不同点 – 只能用having 不能用where
select stuNo, avg(score) from stu group by stuNo having avg(score)>60; 正确
select stuNo, avg(score) from stu group by stuNo where avg(score)>60; 错误
这里where不管放在group by前还是后,都是错的, 看下文章开头的sql执行顺序就明白了