亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql的having關鍵字如何用

發布時間:2022-02-25 09:49:12 來源:億速云 閱讀:379 作者:iii 欄目:MySQL數據庫

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

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

mysql的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>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 關鍵字后已經查詢出了 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>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'

由結果可以看出,如果 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)>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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌海市| 麻城市| 仁布县| 利辛县| 建阳市| 泰宁县| 盐亭县| 资溪县| 长沙县| 横峰县| 潼关县| 留坝县| 乌拉特前旗| 抚顺市| 克山县| 上蔡县| 虞城县| 徐闻县| 邹平县| 绥宁县| 宜昌市| 凤凰县| 永泰县| 禹城市| 方正县| 井研县| 林口县| 壤塘县| 青田县| 正安县| 绥中县| 高陵县| 香河县| 沂水县| 五台县| 沙洋县| 黄骅市| 通河县| 建始县| 林口县| 宝兴县|