欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2023年01月09日 15:19:45   作者:菜鳥教程*…*  
當(dāng)SQL語(yǔ)句中使用聚合函數(shù),然后又需要對(duì)聚合函數(shù)的記錄集進(jìn)行篩選過濾時(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

【問題】編寫 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ò)誤的寫法:

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ā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)行過濾,只能使用having。Having語(yǔ)句通常與Group by語(yǔ)句聯(lián)合使用,用來(lái)過濾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;

也可以寫成如下形式:

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單表恢復(fù)的步驟

    MySQL單表恢復(fù)的步驟

    這篇文章主要介紹了MySQL單表恢復(fù)的步驟,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • MySQL 游標(biāo)的作用與使用相關(guān)

    MySQL 游標(biāo)的作用與使用相關(guān)

    這篇文章主要介紹了MySQL游標(biāo)的相關(guān)資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2021-01-01
  • 深入探究MySQL事務(wù)實(shí)現(xiàn)原理

    深入探究MySQL事務(wù)實(shí)現(xiàn)原理

    數(shù)據(jù)庫(kù)事務(wù)是指一組數(shù)據(jù)庫(kù)操作,這些操作必須被視為一個(gè)不可分割的單元,要么全部執(zhí)行成功,要么全部失敗回滾,本文詳細(xì)的給大家介紹了MySQL事務(wù)的實(shí)現(xiàn)原理,對(duì)我們學(xué)習(xí)MySQL有一定的幫助,感興趣的同學(xué)可以跟著小編一起來(lái)探究
    2023-06-06
  • Mysql主鍵和唯一鍵的區(qū)別點(diǎn)總結(jié)

    Mysql主鍵和唯一鍵的區(qū)別點(diǎn)總結(jié)

    在本篇文章中小編給大家分享了關(guān)于Mysql主鍵和唯一鍵的區(qū)別,有興趣的朋友們學(xué)習(xí)下吧。
    2019-02-02
  • 數(shù)據(jù)庫(kù)中GROUP?BY語(yǔ)句詳解、示例、注意事項(xiàng)

    數(shù)據(jù)庫(kù)中GROUP?BY語(yǔ)句詳解、示例、注意事項(xiàng)

    在Oracle數(shù)據(jù)庫(kù)中GROUP?BY是用于對(duì)結(jié)果集進(jìn)行分組的一個(gè)關(guān)鍵字,這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫(kù)中GROUP?BY語(yǔ)句詳解、示例、注意事項(xiàng)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Mysql 5.7.9 shutdown 語(yǔ)法實(shí)例詳解

    Mysql 5.7.9 shutdown 語(yǔ)法實(shí)例詳解

    之前如果想關(guān)閉一個(gè)mysql數(shù)據(jù)庫(kù)可以通過kill 命令、mysqladmin shutdown 、service mysqld stop 等這樣的方式。然而在mysql-5.7.9之后mysql終于提供了SQL接口的shutdown語(yǔ)法啦
    2017-06-06
  • 深入探究MySQL中使用where 1=1是否存在性能影響

    深入探究MySQL中使用where 1=1是否存在性能影響

    最近在項(xiàng)目中使用 mybatis 寫 SQL 使用了 where 1=1 來(lái)簡(jiǎn)化多條件拼接的寫法,案例如下,借此聊聊多條件拼接的常見的一些寫法以及 where 1=1 是否存在性能影響,需要的朋友可以參考下
    2024-02-02
  • MySQL用戶權(quán)限驗(yàn)證與管理方法詳解

    MySQL用戶權(quán)限驗(yàn)證與管理方法詳解

    這篇文章主要介紹了MySQL用戶權(quán)限驗(yàn)證與管理方法,結(jié)合實(shí)例形式詳細(xì)分析了mysql針對(duì)用戶權(quán)限的驗(yàn)證、查看、收回、修改等各種常用操作技巧,需要的朋友可以參考下
    2018-04-04
  • mysql獲取分組后每組的最大值實(shí)例詳解

    mysql獲取分組后每組的最大值實(shí)例詳解

    這篇文章主要介紹了 mysql獲取分組后每組的最大值實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • MySQL模糊查詢語(yǔ)句整理集合

    MySQL模糊查詢語(yǔ)句整理集合

    在本篇文章里小編給大家分享的是一篇關(guān)于MySQL模糊查詢語(yǔ)句整理內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-02-02

最新評(píng)論