例子
請考慮下表了解學生是否持有駕駛執照:
| 
 student_id  | 
 full_name  | 
 年齡  | 
 has_license  | 
|---|---|---|---|
| 
 1  | 
 天空鎮  | 
 17  | 
 0  | 
| 
 2  | 
 本·戴維斯  | 
 19  | 
 1  | 
| 
 3  | 
 特拉維斯·蘋果  | 
 18  | 
 0  | 
| 
 4  | 
 亞瑟·大衛  | 
 16  | 
 0  | 
| 
 5  | 
 本傑明鎮  | 
 17  | 
 1  | 
可以使用此處的代碼創建上述示例表。
基本用法
要查找該年齡段隻有一名學生的年齡:
SELECT age, COUNT(*)
FROM drivers_license
GROUP BY age
HAVING COUNT(*) = 1;
+------+----------+
| age  | COUNT(*) |
+------+----------+
|   19 |        1 |
|   18 |        1 |
|   16 |        1 |
+------+----------+
請注意,年齡 17 不會返回,因為有兩名學生是 17 。
將 HAVING 與 WHERE 結合使用
要在執行分組之前包含 WHERE 子句以過濾掉具有 full_name='Sky Towner' 的學生:
SELECT age, COUNT(*)
FROM drivers_license
WHERE full_name <> 'Sky Towner'
GROUP BY age
HAVING COUNT(*) = 1;
+------+----------+
| age  | COUNT(*) |
+------+----------+
|   19 |        1 |
|   18 |        1 |
|   16 |        1 |
|   17 |        1 |
+------+----------+
這次我們返回了 4 條記錄,因為在執行分組之前 'Sky Towner' 已被 WHERE 子句過濾掉。因此,在聚合/分組的記錄中,'Benjamin Town' 是唯一的 17 年份,因此滿足 HAVING 子句並返回年齡 17。
相關用法
- MySQL HOUR()用法及代碼示例
 - MySQL HEX方法用法及代碼示例
 - MySQL HEX()用法及代碼示例
 - MySQL HOUR方法用法及代碼示例
 - MySQL Hour()用法及代碼示例
 - MySQL ROUND()用法及代碼示例
 - MySQL REPEAT()用法及代碼示例
 - MySQL POWER()用法及代碼示例
 - MySQL LEAD() and LAG()用法及代碼示例
 - MySQL IS_IPV4()用法及代碼示例
 - MySQL RADIANS方法用法及代碼示例
 - MySQL VARIANCE方法用法及代碼示例
 - MySQL WEEK()用法及代碼示例
 - MySQL TIME_FORMAT方法用法及代碼示例
 - MySQL CURTIME()用法及代碼示例
 - MySQL weekofyear()用法及代碼示例
 - MySQL Convert()用法及代碼示例
 - MySQL IS NOT用法及代碼示例
 - MySQL FROM_BASE64()用法及代碼示例
 - MySQL LEFT方法用法及代碼示例
 - MySQL UCASE方法用法及代碼示例
 - MySQL PI()用法及代碼示例
 - MySQL CONCAT()用法及代碼示例
 - MySQL UPPER方法用法及代碼示例
 - MySQL ATAN2方法用法及代碼示例
 
注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | HAVING。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
