码迷,mamicode.com
首页 > 其他好文 > 详细

having和where的区别

时间:2018-05-11 15:34:13      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:avg   区别   查询   where   from   不可   sel   ice   number   

本质的区别就是where筛选的是数据库表里面本来就有的字段,而having筛选的字段是从前筛选的字段筛选的。

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

 

select goods_price,goods_name from sw_goods where goods_price>100

select goods_price,goods_name from sw_goods having goods_price>100

原因:goods_price作为条件也出现在了查询字段中。

 

只可以使用where,不可以使用having的情况:

 

select goods_name,goods_number from sw_goods where goods_price>100

select goods_name,goods_number from sw_goods where goods_price>100(X)

原因:goods_price作为筛选条件没有出现在查询字段中,所以就会报错。

having的原理是先select 然后从select出来的进行筛选。而where是先筛选在select。

 

只可以使用having,不可以使用where的情况:

 

select goods_category_id,avg(good_price) as ag from sw_goods group by goods_category having ag>1000

select  goods_category_id,avg(goods_price) as ag from sw_goods where ag>1000 group by goods_category(X)报错,这个表里没有这个ag这个字段。

where子句中一般不使用聚合函数那种情况。

having和where的区别

标签:avg   区别   查询   where   from   不可   sel   ice   number   

原文地址:https://www.cnblogs.com/ljf-Sky/p/9024683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!