最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中where與having的區(qū)別實(shí)例詳解

 更新時(shí)間:2023年01月09日 15:19:45   作者:菜鳥(niǎo)教程*…*  
當(dāng)SQL語(yǔ)句中使用聚合函數(shù),然后又需要對(duì)聚合函數(shù)的記錄集進(jìn)行篩選過(guò)濾時(shí),這個(gè)時(shí)候就需要用到Having子句,下面這篇文章主要給大家介紹了關(guān)于Mysql中where與having區(qū)別的相關(guān)資料,需要的朋友可以參考下

以一道題來(lái)做引子

牛客,SQL30 計(jì)算總和

OrderItems表代表訂單信息,包括字段:訂單號(hào)order_num和item_price商品售出價(jià)格、quantity商品數(shù)量。

order_num

item_price

quantity

a1

10

105

a2

1

1100

a3

1

200

a4

2

1121

a5

5

10

a6

1

19

a7

7

5

【問(wèn)題】編寫(xiě) SQL 語(yǔ)句,根據(jù)訂單號(hào)聚合,返回訂單總價(jià)不小于1000 的所有訂單號(hào),最后的結(jié)果按訂單號(hào)進(jìn)行升序排序。

提示:總價(jià) = item_price 乘以 quantity

order_num

total_price

a1

1050

a2

1319

a4

2242

先來(lái)看一看錯(cuò)誤的寫(xiě)法:

select order_num, sum(item_price*quantity) total_price
from OrderItems
group by order_num
where total_price >= 1000
order by order_num

錯(cuò)誤:SQL_ERROR_INFO: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where total_price >= 1000\norder by order_num' at line 4"

上述的錯(cuò)誤為:非法使用聚合函數(shù),不能在 WHERE 子句中使用聚合函數(shù)

我們的 total_price等價(jià)于sum(item_price*quantity),而在WHERE 子句中使用聚合函數(shù)

改錯(cuò)

select order_num, sum(item_price*quantity) total_price
from OrderItems
group by order_num
having total_price >= 1000
order by order_num

這樣就對(duì)了

使用having時(shí)注意:

1. 行已經(jīng)被分組。

2. 使用了聚合函數(shù)。

3. 滿足HAVING 子句中條件的分組將被顯示。

4. HAVING 不能單獨(dú)使用,必須要跟 GROUP BY 一起使用。

那么和where的區(qū)別有以下幾點(diǎn):

1. WHERE 可以直接使用表中的字段作為篩選條件,但不能使用分組中的計(jì)算函數(shù)作為篩選條件; HAVING 必須要與 GROUP BY 配合使用,可以把分組計(jì)算的函數(shù)和分組字段作為篩選條件。

2. 如果需要通過(guò)連接從關(guān)聯(lián)表中獲取需要的數(shù)據(jù),WHERE 是先篩選后連接,而 HAVING 是先連接 后篩選。

3. 第二項(xiàng)導(dǎo)致了WHERE執(zhí)行效率高,不能使用分組中的計(jì)算函數(shù)進(jìn)行篩選,而HAVING 可以使用分組中的計(jì)算函數(shù),執(zhí)行效率較低。

where、聚合函數(shù)、having在from后面的執(zhí)行順序:

where > 聚合函數(shù) > having

若需要對(duì)聚合函數(shù)對(duì)group by的結(jié)果進(jìn)行過(guò)濾,只能使用having。Having語(yǔ)句通常與Group by語(yǔ)句聯(lián)合使用,用來(lái)過(guò)濾Group by語(yǔ)句返回的結(jié)果集,Having語(yǔ)句的存在彌補(bǔ)了Where關(guān)鍵字不能與聚合函數(shù)聯(lián)合使用的不足。

例如:查詢平均成績(jī)大于60分的同學(xué)的學(xué)號(hào)和平均成績(jī)

select s_id, AVG(s_score) s_avg from Score group by s_id Having AVG(s_score) > 60;

也可以寫(xiě)成如下形式:

select s_id, AVG(s_score) s_avg from Score group by s_id Having s_avg > 60;

如果將Having改成where 就會(huì)報(bào)錯(cuò),因?yàn)閣here的執(zhí)行順序大于聚合函數(shù)。

總結(jié)

到此這篇關(guān)于Mysql中where與having區(qū)別的文章就介紹到這了,更多相關(guān)Mysql where與having區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 碰到MySQL無(wú)法啟動(dòng)1067錯(cuò)誤問(wèn)題解決方法

    碰到MySQL無(wú)法啟動(dòng)1067錯(cuò)誤問(wèn)題解決方法

    創(chuàng)建primay key過(guò)程中發(fā)生了斷電,當(dāng)電腦再次啟動(dòng)時(shí)候,發(fā)現(xiàn)mysql 服務(wù)無(wú)法啟動(dòng),使用 net start 提示 1067錯(cuò)誤;后來(lái)只能通過(guò)手工刪除數(shù)據(jù)文件,日志文件,再啟動(dòng)服務(wù),然后導(dǎo)入數(shù)據(jù)來(lái)完成
    2013-01-01
  • MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)的36條原則(小結(jié))

    MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)的36條原則(小結(jié))

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)的36條原則(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • MySQL下常見(jiàn)的啟動(dòng)失敗與備份失敗問(wèn)題的解決教程

    MySQL下常見(jiàn)的啟動(dòng)失敗與備份失敗問(wèn)題的解決教程

    這篇文章主要介紹了MySQL下常見(jiàn)的啟動(dòng)失敗與備份失敗問(wèn)題的解決教程,示例環(huán)境基于Linux系統(tǒng),需要的朋友可以參考下
    2015-11-11
  • mysql 5.7.20 win64 安裝及配置方法

    mysql 5.7.20 win64 安裝及配置方法

    這篇文章主要介紹了mysql 5.7.20 win64 安裝及配置方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-11-11
  • 利用Prometheus與Grafana對(duì)Mysql服務(wù)器的性能監(jiān)控詳解

    利用Prometheus與Grafana對(duì)Mysql服務(wù)器的性能監(jiān)控詳解

    Prometheus是源于 Google Borgmon的一個(gè)開(kāi)源監(jiān)控系統(tǒng),用 Golang開(kāi)發(fā)。被很多人稱為下一代監(jiān)控系統(tǒng)。Grafana是一個(gè)開(kāi)源的圖表可視化系統(tǒng),簡(jiǎn)單說(shuō)圖表配置比較方便、生成的圖表比較漂亮。下面就介紹了利用Prometheus與Grafana對(duì)Mysql服務(wù)器性能監(jiān)控的方法。
    2017-03-03
  • MySQL常用存儲(chǔ)引擎功能與用法詳解

    MySQL常用存儲(chǔ)引擎功能與用法詳解

    這篇文章主要介紹了MySQL常用存儲(chǔ)引擎功能與用法,較為詳細(xì)的分析了mysql存儲(chǔ)引擎的分類、功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)、數(shù)據(jù)表的方法

    mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)、數(shù)據(jù)表的方法

    這篇文章主要介紹了mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)、數(shù)據(jù)表的方法,有需要的朋友可以參考一下
    2013-11-11
  • mysql 復(fù)制過(guò)濾重復(fù)如何解決

    mysql 復(fù)制過(guò)濾重復(fù)如何解決

    在進(jìn)行mysql復(fù)制過(guò)程中,會(huì)出現(xiàn)數(shù)據(jù)重復(fù)的現(xiàn)象,怎樣利用mysql 過(guò)濾重復(fù)的數(shù)據(jù)呢?本文將提供詳細(xì)的解決方法,需要了解的朋友可以參考下
    2012-11-11
  • Windows平臺(tái)下MySQL常用操作與命令

    Windows平臺(tái)下MySQL常用操作與命令

    Windows平臺(tái)下MySQL常用操作與命令,學(xué)習(xí)mysql的朋友可以參考下。
    2011-09-09
  • 基于C++實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)連接池實(shí)例

    基于C++實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)連接池實(shí)例

    數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配、管理、和釋放數(shù)據(jù)庫(kù)連接,允許使用應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接。數(shù)據(jù)庫(kù)連接是關(guān)鍵有限且昂貴的資源,一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象均對(duì)應(yīng)一個(gè)物理數(shù)據(jù)庫(kù)的連接,每次操作都打開(kāi)一個(gè)物理連接,使用完都關(guān)閉連接
    2022-12-12

最新評(píng)論

临江市| 英吉沙县| 武鸣县| 旅游| 湘潭市| 安达市| 南开区| 静宁县| 米易县| 尚志市| 修文县| 贡嘎县| 绩溪县| 双流县| 栾城县| 长沙县| 德昌县| 武乡县| 白山市| 偃师市| 郯城县| 梁平县| 新竹县| 江阴市| 荔浦县| 拉萨市| 绿春县| 石棉县| 高雄县| 多伦县| 石柱| 东港市| 都昌县| 临桂县| 福清市| 固阳县| 乌鲁木齐县| 景谷| 增城市| 荥阳市| 德安县|