Where 和 having的区别

118 阅读1分钟

Where

  1. 在结果返回之前起作用
  2. where 不能与group by 连用
  3. where 后面的条件不能有avg,sum之类的,因为where后面一般跟的是数据库表里面的字段

Having

  1. 在结果返回之后起作用
  2. 通常与group by 连用
  3. 查询条件后面通常有聚合函数 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 后面的字段有 , 就可以进行过滤