【MySQL】数据分组(关键字:GROUP BY)过滤分组(关键字:HAVING)

我是一名立志把细节说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持


数据分组,关键字:GROUP BY

  • 如果分组列中具有 NULL 值,则 NULL 将作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。
  • 如果有 WHERE 关键字,GROUP BY 子句必须出现在 WHERE 子句之后。
  • 如果有 ORDER BY 关键字,GROUP BY 子句必须出现在ORDER BY子句之前。

以基础的 WHERE 关键字作为比较对象,查询某一个班级学生数量。

SELECT COUNT(*) AS class_student_number
FROM student
WHERE class_number = 20230001;

输出

+-----------------------+
|  class_student_number |
+-----------------------+
|                     6 |
+-----------------------+

GROUP BY 使用示例:

SELECT class_number, count(*) AS class_student_number
FROM student
GROUP BY class_number;

输出

+--------------+-----------------------+
| class_number |  class_student_number |
+--------------+-----------------------+
|     20230002 |                     3 |
|     20230001 |                     6 |
|     20230003 |                     1 |
+--------------+-----------------------+

过滤分组,关键字:HAVING

过滤 GROUP BY 关键字的分组,需要使用 HAVING 关键字。 HAVING 关键字的作用很类似于 WHERE 关键字。

区别是:

  • WHERE 关键字过滤行,在数据分组前进行过滤。
  • HAVING 关键字过滤组,在数据分组后进行过滤。
  • WHERE 排除的行不包括在分组中。

我们还使用上面示例数据演示比较:

SELECT s.class_number, count(*) AS class_student_number
FROM student s
GROUP BY s.class_number;

输出

+--------------+-----------------------+
| class_number |  class_student_number |
+--------------+-----------------------+
|     20230002 |                     3 |
|     20230001 |                     6 |
+--------------+-----------------------+

通过和上面没有使用HAVING 关键的查询结果比较,我们发现学生数只有一个的 20230003 班分组数据过滤出去了。


常见 SELECT 子句顺序

子句说明必须使用
SELECT要返回的列或表达式
FROM要检索的数据表仅在从表中选择数据时使用
WHERE行级过滤
GROUP BY分组仅在按组计算聚集时使用
HAVING组级过滤
ORDER BY返回数据排序
LIMIT限制返回结果行数

我是一名立志把细节说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑 ,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我梦Leo

谢谢无敌帅气可爱迷人的你哦 ~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值