真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

淺談Mysql中where和having的區(qū)別

一、誤區(qū):

站在用戶的角度思考問題,與客戶深入溝通,找到瑯琊網(wǎng)站設(shè)計與瑯琊網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋瑯琊地區(qū)。

不要錯誤的認為having和group by 必須配合使用.

二、where和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可以用的前提是我已經(jīng)篩選出了goods_price字段,在這種情況下和where的效果是等效的。

但是如果沒有select goods_price 就會報錯??!因為having是從前篩選的字段再篩選,而where是從數(shù)據(jù)表中的字段直接進行的篩選的。

因此可以看到where 是針對數(shù)據(jù)庫文件的發(fā)揮作用,而having是針對結(jié)果集發(fā)揮作用。

其實第二個sql語句等價于如下語句更好理解:

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

2. 只可以用where,不可以用having的情況:

    select goods_name,goods_number from goods where goods_price > 100

    select goods_name,goods_number from goods having goods_price > 100

解釋:第二個sql語句報錯,這是因為前面并沒有篩選goods_price 造成的,更能看出having是針對結(jié)果集發(fā)揮作用。

3. 只可以用having,不可以用where情況:

查詢每種category_id商品的價格平均值,獲取平均價格大于1000元的商品信息。

 select category_id , avg(goods_price) as ag from goods group by category_id having ag > 1000

 select category_id , avg(goods_price) as ag from goods where ag>1000 group by category_id 

解釋:第二個sql語句報錯,這是因為from goods 這張數(shù)據(jù)表里面沒有ag這個字段。

三、綜述:


where 后面要跟的是數(shù)據(jù)表里的字段,where針對數(shù)據(jù)庫文件的發(fā)揮作用。


而having只是根據(jù)前面查詢出來的結(jié)果集再次進行查詢,因此having是針對結(jié)果集發(fā)揮作用。


四、where和having的綜合運用案例:

淺談Mysql中where和having的區(qū)別

查詢2門或2門以上不及格同學(xué)的平均成績。

SELECT st_name,sum(score<60)  as k,avg(score) FROM tbl_score group by st_name having k>=2;



網(wǎng)站題目:淺談Mysql中where和having的區(qū)別
當(dāng)前路徑:http://weahome.cn/article/jccjed.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部