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;