Mysql中where和having的区别以及having的误区

mysql 中where 和having 的区别
相同点二者都是对数据集进行的过滤

sql中where和having的区别
a. where 和having 使用的地方不一样
where可以用于select、update、delete和insert into values(select * from table where …)语句中。
having只能用于select语句中

b. 执行的顺序不一样
where的搜索条件是在执行语句进行group by 之前应用
having的搜索条件是在group by条件后执行的
即如果where和having一起用时,where会先执行,having后执行

c.子句有区别
因为执行顺序的区别,where 后面是对原数据进行的过滤,having是对结果集进行的过滤,所以having中可以使用别名,聚合函数等,而且having中字段必须出现在select 后面,where 只能对元数据字段进行过滤
where 后面要跟的是数据表里的字段,where针对数据库文件的发挥作用。
而having只是根据前面查询出来的结果集再次进行查询,因此having是针对结果集发挥作用。

注意事项
不要错误的认为having和group by 必须配合使用.having 单独也可以使用

1.where和having都可以使用的场景:

 select goods_price,goods_name from goods where goods_price > 100
 select goods_price,goods_name from goods having goods_price > 100

上面的having可以用的前提是我已经筛选出了

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值