📅  最后修改于: 2023-12-03 14:44:26.963000             🧑  作者: Mango
在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的记录。