這篇文章主要講解了“MySQL的having關(guān)鍵字如何用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“mysql的having關(guān)鍵字如何用”吧!
禮縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
在mysql中,having關(guān)鍵字需要和SELECT語句一起使用,用于對分組后的數(shù)據(jù)進(jìn)行過濾,語法“SELECT {*|字段列名} FROM 數(shù)據(jù)表名 HAVING 查詢條件;”。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
在 MySQL 中,可以使用 HAVING 關(guān)鍵字對分組后的數(shù)據(jù)進(jìn)行過濾。
使用 HAVING 關(guān)鍵字的語法格式如下:
HAVING 查詢條件;
HAVING 關(guān)鍵字和 WHERE 關(guān)鍵字都可以用來過濾數(shù)據(jù),且 HAVING 支持 WHERE 關(guān)鍵字中所有的操作符和語法。
但是 WHERE 和 HAVING 關(guān)鍵字也存在以下幾點差異:
一般情況下,WHERE 用于過濾數(shù)據(jù)行,而 HAVING 用于過濾分組。
WHERE 查詢條件中不可以使用聚合函數(shù),而 HAVING 查詢條件中可以使用聚合函數(shù)。
WHERE 在數(shù)據(jù)分組前進(jìn)行過濾,而 HAVING 在數(shù)據(jù)分組后進(jìn)行過濾 。
WHERE 針對數(shù)據(jù)庫文件進(jìn)行過濾,而 HAVING 針對查詢結(jié)果進(jìn)行過濾。也就是說,WHERE 根據(jù)數(shù)據(jù)表中的字段直接進(jìn)行過濾,而 HAVING 是根據(jù)前面已經(jīng)查詢出的字段進(jìn)行過濾。
WHERE 查詢條件中不可以使用字段別名,而 HAVING 查詢條件中可以使用字段別名。
下面通過實例讓大家更直觀的了解 WHERE 和 HAVING 關(guān)鍵字的相同點和不同點。
例 1
分別使用 HAVING 和 WHERE 關(guān)鍵字查詢出 tb_students_info 表中身高大于 150 的學(xué)生姓名,性別和身高。SQL 語句和運行結(jié)果如下。
mysql> SELECT name,sex,height FROM tb_students_info -> HAVING height>150; +--------+------+--------+ | name | sex | height | +--------+------+--------+ | Dany | 男 | 160 | | Green | 男 | 158 | | Henry | 女 | 185 | | Jane | 男 | 162 | | Jim | 女 | 175 | | John | 女 | 172 | | Lily | 男 | 165 | | Susan | 男 | 170 | | Thomas | 女 | 178 | | Tom | 女 | 165 | +--------+------+--------+ 10 rows in set (0.00 sec) mysql> SELECT name,sex,height FROM tb_students_info -> WHERE height>150; +--------+------+--------+ | name | sex | height | +--------+------+--------+ | Dany | 男 | 160 | | Green | 男 | 158 | | Henry | 女 | 185 | | Jane | 男 | 162 | | Jim | 女 | 175 | | John | 女 | 172 | | Lily | 男 | 165 | | Susan | 男 | 170 | | Thomas | 女 | 178 | | Tom | 女 | 165 | +--------+------+--------+ 10 rows in set (0.00 sec)
上述實例中,因為在 SELECT 關(guān)鍵字后已經(jīng)查詢出了 height 字段,所以 HAVING 和 WHERE 都可以使用。但是如果 SELECT 關(guān)鍵字后沒有查詢出 height 字段,MySQL 就會報錯。
例 2
使用 HAVING 和 WHERE 關(guān)鍵字分別查詢出 tb_students_info 表中身高大于 150 的學(xué)生姓名和性別(與例 1 相比,這次沒有查詢 height 字段)。SQL 語句和運行結(jié)果如下。
mysql> SELECT name,sex FROM tb_students_info -> WHERE height>150; +--------+------+ | name | sex | +--------+------+ | Dany | 男 | | Green | 男 | | Henry | 女 | | Jane | 男 | | Jim | 女 | | John | 女 | | Lily | 男 | | Susan | 男 | | Thomas | 女 | | Tom | 女 | +--------+------+ 10 rows in set (0.00 sec) mysql> SELECT name,sex FROM tb_students_info HAVING height>150; ERROR 1054 (42S22): Unknown column 'height' in 'having clause'
由結(jié)果可以看出,如果 SELECT 關(guān)鍵字后沒有查詢出 HAVING 查詢條件中使用的 height 字段,MySQL 會提示錯誤信息:“having子句”中的列“height”未知”。
例 3
根據(jù) height 字段對 tb_students_info 表中的數(shù)據(jù)進(jìn)行分組,并使用 HAVING 和 WHERE 關(guān)鍵字分別查詢出分組后平均身高大于 170 的學(xué)生姓名、性別和身高。SQL 語句和運行結(jié)果如下。
mysql> SELECT GROUP_CONCAT(name),sex,height FROM tb_students_info -> GROUP BY height -> HAVING AVG(height)>170; +--------------------+------+--------+ | GROUP_CONCAT(name) | sex | height | +--------------------+------+--------+ | John | 女 | 172 | | Jim | 女 | 175 | | Thomas | 女 | 178 | | Henry | 女 | 185 | +--------------------+------+--------+ 4 rows in set (0.00 sec) mysql> SELECT GROUP_CONCAT(name),sex,height FROM tb_students_info WHERE AVG(height)>170 GROUP BY height; ERROR 1111 (HY000): Invalid use of group function
由結(jié)果可以看出,如果在 WHERE 查詢條件中使用聚合函數(shù),MySQL 會提示錯誤信息:無效使用組函數(shù)。
感謝各位的閱讀,以上就是“mysql的having關(guān)鍵字如何用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對mysql的having關(guān)鍵字如何用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
網(wǎng)站名稱:mysql的having關(guān)鍵字如何用
當(dāng)前URL:http://aaarwkj.com/article32/pdessc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站策劃、動態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、商城網(wǎng)站、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)