国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql的having關鍵字咋用

2024-07-24 12:33:25
字體:
來源:轉載
供稿:網友
  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關鍵字如何用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大同市| 饶阳县| 中超| 兴业县| 阿勒泰市| 奇台县| 安丘市| 塔河县| 靖西县| 罗平县| 油尖旺区| 桦南县| 宝兴县| 剑阁县| 惠水县| 定结县| 巧家县| 平南县| 土默特右旗| 奎屯市| 北碚区| 霍州市| 田阳县| 吉木萨尔县| 肃北| 石首市| 揭西县| 安龙县| 青州市| 高唐县| 筠连县| 蕉岭县| 旬阳县| 常德市| 惠州市| 喀喇沁旗| 贵州省| 六安市| 资兴市| 额敏县| 东丽区|