having和where的区别

时间:2021-05-31 07:44:14

区别:

where:语句条件字段,必须是“数据表中存在的”字段

having:语句条件字段  必须是查询结果集中存在的字段

 

having()设置sql语句查询条件

group by 就使用having

 

where 和 having都可以设置查询条件,两种在某些场合可以通用

where:条件字段必须是“数据表” 存在字段

having:条件字段必须是“结果集”中的字段

 

一、两者可以通用

select * from goods where goods_price > 1000;

select * from goods where goods_price >1000;

 

二、只能用where (不能用having)

select goods_id,goods_name from goods where goods_price > 1000;

select goods_id,goods_name from goods having goods_price > 1000;//错误,因为结果集中没有goods_price

 

三、只能用having(不能用where)

select goods_brand_id,count(*) as cnt from goods having cnt > 3;

selecct goods_brand_id,
count(*) as cnt from goods where cnt > 3;//错误,因为表中没有cnt