2024年12月06日 mysql having的用法 极客笔记
在MySQL中,HAVING子句用于对GROUP BY子句分组后的结果集进行过滤。它类似于WHERE子句,但是WHERE子句是在数据分组前对数据进行筛选,而HAVING子句是在数据分组后对数据进行筛选。
HAVING子句的基本语法如下:
SELECT column_name(s)
FROM table_name
GROUP BY column_name(s)
HAVING condition
column_name(s)
:需要检索的列名table_name
:要检索数据的表名condition
:HAVING子句中的条件,根据该条件对分组数据进行筛选假设我们有一个名为student
的表,包含三个字段:student_id, name, score
,现在我们想统计每个学生的平均分,并筛选出平均分大于80的学生。
首先,创建student
表并插入一些数据:
CREATE TABLE student (
student_id INT PRIMARY KEY,
name VARCHAR(50),
score INT
);
INSERT INTO student VALUES (1, 'Alice', 85);
INSERT INTO student VALUES (2, 'Bob', 75);
INSERT INTO student VALUES (3, 'Cathy', 90);
INSERT INTO student VALUES (4, 'David', 70);
INSERT INTO student VALUES (5, 'Emma', 95);
接下来,使用HAVING子句查询出平均分大于80的学生:
SELECT name, AVG(score) AS avg_score
FROM student
GROUP BY name
HAVING avg_score > 80;
运行以上查询语句,我们将得到结果:
| name | avg_score |
|-------|-----------|
| Alice | 85 |
| Cathy | 90 |
| Emma | 95 |
在上面的示例中,我们首先使用GROUP BY name
将数据按照学生姓名分组,然后计算每个学生的平均分,并使用HAVING子句过滤出平均分大于80的学生。
通过本文的介绍,我们了解了MySQL中HAVING子句的用法及语法规则。通过使用HAVING子句,我们可以对分组后的数据进行更精细的筛选,以满足特定的查询需求。在实际应用中,可以根据业务需求灵活运用HAVING子句,提高数据查询的效率和精确度。
本文链接:http://so.lmcjl.com/news/19085/