WHERE 子句过滤行,应用于分组前;HAVING 子句过滤组,应用于分组后且可使用组聚合函数的结果。

WHERE 与 HAVING 子句的区别
在 MySQL 中,WHERE 和 HAVING 子句都用于过滤数据集,但它们在作用范围和使用方式上存在主要差异。
WHERE 子句
- 作用在 SELECT 语句的 FROM 子句中。
- 用于过滤行,只能基于表中的列。
- 在对行进行分组之前应用。
HAVING 子句
- 作用在 SELECT 语句的 GROUP BY 子句之后。
- 用于过滤组,可以基于组聚合函数的结果。
- 在对行进行分组之后应用。
使用示例
WHERE 子句:
DM建站系统汽车保养维修HTML5网站模板,DM企业建站系统。是由php+mysql开发的一套专门用于中小企业网站建设的开源cms。DM系统的理念就是组装,把模板和区块组装起来,产生不同的网站效果。可以用来快速建设一个响应式的企业网站( PC,手机,微信都可以访问)。后台操作简单,维护方便。DM企业建站系统安装步骤:第一步,先用phpmyadmin导入sql文件。 第二步:把文件放到你的本地服务器
SELECT * FROM customers WHERE age > 30;
此查询从 customers 表中选择所有年龄大于 30 的客户。
HAVING 子句:
SELECT city, COUNT(*) AS customer_count FROM customers GROUP BY city HAVING customer_count > 100;
此查询从 customers 表中选择所有客户数量超过 100 个的城市。
总结
- WHERE 子句用于过滤行,在分组之前应用。
- HAVING 子句用于过滤组,在分组之后应用,并且可以使用组聚合函数的结果。









