having和where的區別


本質的區別就是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 having 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子句中一般不使用聚合函數那種情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM