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

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

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

以一道題來做引子

牛客,SQL30 計算總和

OrderItems表代表訂單信息,包括字段:訂單號order_num和item_price商品售出價格、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

【問題】編寫 SQL 語句,根據(jù)訂單號聚合,返回訂單總價不小于1000 的所有訂單號,最后的結果按訂單號進行升序排序。

提示:總價 = item_price 乘以 quantity

order_num

total_price

a1

1050

a2

1319

a4

2242

先來看一看錯誤的寫法:

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

錯誤: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"

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

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

改錯

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

這樣就對了

使用having時注意:

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

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

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

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

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

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

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

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

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

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

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

例如:查詢平均成績大于60分的同學的學號和平均成績

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

也可以寫成如下形式:

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

如果將Having改成where 就會報錯,因為where的執(zhí)行順序大于聚合函數(shù)。

總結

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

相關文章

  • 碰到MySQL無法啟動1067錯誤問題解決方法

    碰到MySQL無法啟動1067錯誤問題解決方法

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

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

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

    MySQL下常見的啟動失敗與備份失敗問題的解決教程

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

    mysql 5.7.20 win64 安裝及配置方法

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

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

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

    MySQL常用存儲引擎功能與用法詳解

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

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

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

    mysql 復制過濾重復如何解決

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

    Windows平臺下MySQL常用操作與命令

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

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

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

最新評論

通州市| 扬中市| 敖汉旗| 东海县| 伊金霍洛旗| 平陆县| 汪清县| 呼图壁县| 炎陵县| 大冶市| 和政县| 微山县| 古田县| 修文县| 岢岚县| 舞钢市| 南昌县| 那曲县| 凤山市| 镇平县| 宁武县| 吴江市| 辽中县| 芜湖市| 徐州市| 翁牛特旗| 红原县| 三门峡市| 肇东市| 梨树县| 博客| 万全县| 温宿县| 钦州市| 广东省| 阜阳市| 鄂伦春自治旗| 唐山市| 延边| 甘谷县| 长宁县|