Where 和 having的区别

本文详细解析了SQL查询语句中WHERE与HAVING子句的使用场景及区别。WHERE用于过滤记录,在结果返回前起作用;HAVING则用于过滤已分组的数据,常与GROUP BY一起使用。通过实例对比,帮助读者更好地理解两者的适用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 后面的字段有 , 就可以进行过滤

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值