久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql的having關鍵字如何用

184次閱讀
沒有評論

共計 2930 個字符,預計需要花費 8 分鐘才能閱讀完成。

這篇文章主要講解了“mysql 的 having 關鍵字如何用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“mysql 的 having 關鍵字如何用”吧!

在 mysql 中,having 關鍵字需要和 SELECT 語句一起使用,用于對分組后的數據進行過濾,語法“SELECT {*| 字段列名} FROM 數據表名 HAVING 查詢條件;”。

本教程操作環境:windows7 系統、mysql8 版本、Dell G3 電腦。

MySQL HAVING:過濾分組

在 MySQL 中,可以使用 HAVING 關鍵字對分組后的數據進行過濾。

使用 HAVING 關鍵字的語法格式如下:

HAVING  查詢條件;

HAVING 關鍵字和 WHERE 關鍵字都可以用來過濾數據,且 HAVING 支持 WHERE 關鍵字中所有的操作符和語法。

但是 WHERE 和 HAVING 關鍵字也存在以下幾點差異:

一般情況下,WHERE 用于過濾數據行,而 HAVING 用于過濾分組。

WHERE 查詢條件中不可以使用聚合函數,而 HAVING 查詢條件中可以使用聚合函數。

WHERE 在數據分組前進行過濾,而 HAVING 在數據分組后進行過濾。

WHERE 針對數據庫文件進行過濾,而 HAVING 針對查詢結果進行過濾。也就是說,WHERE 根據數據表中的字段直接進行過濾,而 HAVING 是根據前面已經查詢出的字段進行過濾。

WHERE 查詢條件中不可以使用字段別名,而 HAVING 查詢條件中可以使用字段別名。

下面通過實例讓大家更直觀的了解 WHERE 和 HAVING 關鍵字的相同點和不同點。

例 1

分別使用 HAVING 和 WHERE 關鍵字查詢出 tb_students_info 表中身高大于 150 的學生姓名,性別和身高。SQL 語句和運行結果如下。

mysql  SELECT name,sex,height FROM tb_students_info 
 -  HAVING height 
+--------+------+--------+
| 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 
+--------+------+--------+
| 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 關鍵字后已經查詢出了 height 字段,所以 HAVING 和 WHERE 都可以使用。但是如果 SELECT 關鍵字后沒有查詢出 height 字段,MySQL 就會報錯。

例 2

使用 HAVING 和 WHERE 關鍵字分別查詢出 tb_students_info 表中身高大于 150 的學生姓名和性別(與例 1 相比,這次沒有查詢 height 字段)。SQL 語句和運行結果如下。

mysql  SELECT name,sex FROM tb_students_info 
 -  WHERE height 
+--------+------+
| 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 
ERROR 1054 (42S22): Unknown column  height  in  having clause

由結果可以看出,如果 SELECT 關鍵字后沒有查詢出 HAVING 查詢條件中使用的 height 字段,MySQL 會提示錯誤信息:“having 子句”中的列“height”未知”。

例 3

根據 height 字段對 tb_students_info 表中的數據進行分組,并使用 HAVING 和 WHERE 關鍵字分別查詢出分組后平均身高大于 170 的學生姓名、性別和身高。SQL 語句和運行結果如下。

mysql  SELECT GROUP_CONCAT(name),sex,height FROM tb_students_info 
 -  GROUP BY height 
 -  HAVING AVG(height) 
+--------------------+------+--------+
| 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

由結果可以看出,如果在 WHERE 查詢條件中使用聚合函數,MySQL 會提示錯誤信息:無效使用組函數。

感謝各位的閱讀,以上就是“mysql 的 having 關鍵字如何用”的內容了,經過本文的學習后,相信大家對 mysql 的 having 關鍵字如何用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計2930字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 开原市| 江阴市| 永兴县| 宜君县| 安乡县| 韶关市| 浠水县| 红安县| 来凤县| 诏安县| 泰宁县| 洛浦县| 奇台县| 孟州市| 永清县| 夹江县| 汝城县| 翼城县| 合山市| 文水县| 枣庄市| 汉阴县| 库伦旗| 周宁县| 防城港市| 哈密市| 武邑县| 昌乐县| 射阳县| 莱西市| 安化县| 长岛县| 额尔古纳市| 青河县| 财经| 馆陶县| 太谷县| 华宁县| 遂宁市| 赤壁市| 绥棱县|