以前在學(xué)校里學(xué)習(xí)過SQLserver數(shù)據(jù)庫,發(fā)現(xiàn)學(xué)習(xí)的都是皮毛,今天以正確的姿態(tài)談一下MySQL中where和having的區(qū)別。
誤區(qū):不要錯(cuò)誤的認(rèn)為having和group by 必須配合使用。
下面以一個(gè)例子來具體的講解:
解釋:上面的having可以用的前提是我已經(jīng)篩選出了goods_price字段,在這種情況下和where的效果是等效的,但是如果我沒有select goods_price 就會(huì)報(bào)錯(cuò)!!因?yàn)閔aving是從前篩選的字段再篩選,而where是從數(shù)據(jù)表中的字段直接進(jìn)行的篩選的。
查詢每種goods_category_id商品的價(jià)格平均值,獲取平均價(jià)格大于1000元的商品信息
select goods_category_id , avg(goods_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 //報(bào)錯(cuò)!!因?yàn)閒rom sw_goods 這張數(shù)據(jù)表里面沒有ag這個(gè)字段注意:where 后面要跟的是數(shù)據(jù)表里的字段,如果我把a(bǔ)g換成avg(goods_price)也是錯(cuò)誤的!因?yàn)楸砝餂]有該字段。而having只是根據(jù)前面查詢出來的是什么就可以后面接什么。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注