例子
请考虑下表了解学生是否持有驾驶执照:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。