📜  MySQL HAVING子句(1)

📅  最后修改于: 2023-12-03 14:44:26.963000             🧑  作者: Mango

MySQL HAVING子句

在MySQL中,HAVING子句用于在GROUP BY子句中使用,用于筛选分组后的数据。HAVING子句与WHERE子句的区别在于,WHERE用于筛选原始数据,而HAVING用于筛选分组后的数据。

语法

HAVING子句的基本语法如下:

SELECT column1, column2, ... 
FROM table_name 
GROUP BY column1, column2, ... 
HAVING condition
  • column1, column2, ...:要检索的列的名称。
  • table_name:要从中检索数据的表的名称。
  • GROUP BY:根据指定的列对结果集进行分组。
  • condition:定义筛选分组后数据的条件。
示例

为了更好地理解HAVING子句的用法,我们将演示一个简单的示例。假设我们有一个名为marks表,其中包含学生姓名和分数。我们要查找每个学生的平均分数,并仅显示平均分数大于80的学生记录。

SELECT name, AVG(marks) as avg_marks
FROM marks
GROUP BY name
HAVING AVG(marks) > 80;

以上代码的解释:

  • SELECT name, AVG(marks) as avg_marks:选择学生姓名和平均分数列。其中,AVG函数用于计算每个学生的平均分数列,并将其别名为avg_marks。
  • FROM marks:从marks表中检索数据。
  • GROUP BY name:根据学生姓名对数据进行分组。
  • HAVING AVG(marks) > 80:定义筛选条件,仅检索平均分数大于80的记录。
注意事项
  • HAVING子句必须用在GROUP BY子句之后。
  • HAVING子句仅适用于聚合函数,如AVG、SUM、COUNT等。
  • HAVING子句与WHERE子句类似,可使用逻辑运算符AND、OR和NOT。
  • 在HAVING子句中,可以使用COUNT、SUM和AVG等聚合函数。