在 mysql 中,having 子句用于筛选聚合函数的结果,仅影响聚合值,而非原始数据。它可以过滤聚合结果(按聚合值)、应用多个筛选条件或对聚合结果排序。
HAVING 子句在 MySQL 中的用法
HAVING 子句是在 MySQL 中用于筛选聚合结果(例如 SUM、COUNT、AVG 等)的行。它类似于 WHERE 子句,但它是在聚合函数执行后再应用的,因此只能引用聚合函数和分组列。
语法:
SELECT 聚合函数(列名) FROM 表名 GROUP BY 分组列 HAVING 筛选条件;
用法:
HAVING 子句用于以下情况:
- 过滤聚合结果:根据聚合函数的值筛选行。例如,查找销售额超过 1000 美元的订单。
- 应用多个筛选条件:可以使用多个 HAVING 子句来应用复杂的筛选条件。例如,查找销售额超过 1000 美元且客户类型为“批发”的订单。
- 对聚合结果进行排序:可以使用 HAVING 子句对聚合结果进行排序。例如,按销售额从高到低排序订单。
示例:
查找销售额超过 1000 美元的订单:
SELECT SUM(销售额) FROM 订单表 GROUP BY 订单号 HAVING SUM(销售额) > 1000;
查找销售额超过 1000 美元且客户类型为“批发”的订单:
SELECT SUM(销售额) FROM 订单表 GROUP BY 订单号 HAVING SUM(销售额) > 1000 AND 客户类型 = '批发';
按销售额从高到低排序订单:
SELECT SUM(销售额) FROM 订单表 GROUP BY 订单号 HAVING SUM(销售额) > 0 ORDER BY SUM(销售额) DESC;