MySQL HAVING 子句
时间:2019-02-04 12:52:26 来源:igfitidea点击:
MySQL HAVING子句与GROUP BY子句结合使用,用于将返回的行的组限制为仅满足条件的行。
语法
MySQL中HAVING子句的语法为:
SELECT expression1, expression2, ... expression_n, aggregate_function (expression) FROM tables [WHERE conditions] GROUP BY expression1, expression2, ... expression_n HAVING condition;
参数 | 说明 |
---|---|
aggregate_function | 聚合函数 例如SUM,COUNT,MIN,MAX,或AVG等。 |
expression1,expression2,... expression_n | 未封装在聚合函数中的表达式,它们必须包含在GROUP BY子句中。 |
WHERE conditions | 可选的。指定筛选数据行所使用的条件。 |
HAVING condition | 指定返回组的条件。 |
MySQL:HAVING 子句示例
示例-使用SUM函数的HAVING 子句
使用SUM函数返回产品名称和总数量。MySQL HAVING子句将过滤结果,仅返回总数量大于10的产品。
SELECT product, SUM(quantity) AS "总数量" FROM order_details GROUP BY product HAVING SUM(quantity) > 10;
示例-使用COUNT函数的HAVING 子句
使用COUNT函数返回“produce”类别中的产品名称和(该产品的)订单数。MySQL HAVING子句将过滤结果,仅返回订单数量超过20的产品。
SELECT product, COUNT(*) AS "Number of orders" FROM order_details WHERE category = 'produce' GROUP BY product HAVING COUNT(*) > 20;
示例-使用MIN函数的HAVING 子句
使用MIN函数返回每个部门的名称和该部门的最低工资。MySQL HAVING子句将返回最低工资低于$50,000的那些部门。
SELECT department, MIN(salary) AS "最低薪水" FROM employees GROUP BY department HAVING MIN(salary) < 50000;
示例-使用MAX函数
使用MAX函数返回每个部门的名称和部门中的最高薪水。MySQL HAVING子句将返回最大薪水大于$25,000的部门。
SELECT department, MAX(salary) AS "最高薪水" FROM employees GROUP BY department HAVING MAX(salary) > 25000;