Where
- 在结果返回之前起作用
- where 不能与group by 连用
- where 后面的条件不能有avg,sum之类的,因为where后面一般跟的是数据库表里面的字段
Having
- 在结果返回之后起作用
- 通常与group by 连用
- 查询条件后面通常有聚合函数 avg , sum
实例
1、这样都可以
SELECT * FROM sys_user
WHERE sex = 1
SELECT * FROM sys_user
HAVING sex = 1
2、where可以,having不行,因为having是根据结果进行过滤,结果中没有sex的字段
SELECT username
FROM sys_user
WHERE sex = 1
SELECT username
FROM sys_user
HAVING sex = 1
3、 where 不行 , having可以
SELECT address, AVG(age) ag FROM user
GROUP BY address WHERE ag>1
SELECT address, AVG(age) ag FROM user
GROUP BY address HAVING ag>1
where 是跟数据表里面的字段,因为ag不是数据库表里的。
having则是根据结果来进行过滤,只要select 后面的字段有 , 就可以进行过滤