<!–
MySQL中 GROUP BY 语句在SELECT语句中没有聚合函数时的行为
在MySQL中,GROUP BY语句通常用于对SELECT语句的结果进行分组处理。而在SELECT语句中,如果没有使用聚合函数,那么对于GROUP BY语句的影响将与使用聚合函数时略有不同。
阅读更多:
没有使用聚合函数时的GROUP BY语句
当SELECT语句中没有使用聚合函数时,GROUP BY语句将会根据指定的列对结果集进行分组处理,并将相同结果的行合并。例如,我们有一张名为“students”的表,其中记录了学生的基本信息及其所属的学院:
(adsbygoogle = window.adsbygoogle || []).push({});
| id | name | age | gender | college |
|----|--------|-----|--------|--------------------|
| 1 | Alice | 18 | female | School of Medicine |
| 2 | Bob | 19 | male | School of Law |
| 3 | Cathy | 20 | female | School of Medicine |
| 4 | David | 19 | male | School of Law |
| 5 | Emily | 18 | female | School of Medicine |
| 6 | Frank | 20 | male | School of Science |
| 7 | George | 21 | male | School of Science |
如果我们想要按照各个学院进行分组,那么可以这样写:
SELECT college FROM students GROUP BY college;
这将会返回以下结果:
| college |
|--------------------|
| School of Medicine |
| School of Law |
| School of Science |
使用聚合函数时的GROUP BY语句
与没有使用聚合函数不同,当SELECT语句中使用聚合函数时,GROUP BY语句将会根据指定的列对结果集进行分组处理,并对每组数据应用聚合函数进行计算。例如,如果我们想要计算每个学院的平均年龄,可以这样写:
SELECT college, AVG(age) FROM students GROUP BY college;
这将会返回以下结果:
| college | AVG(age) |
|--------------------|----------|
| School of Medicine | 18.67 |
| School of Law | 19.5 |
| School of Science | 20.5 |
总结
无论SELECT语句中是否使用聚合函数,GROUP BY语句都可以对结果集进行分组处理,但其行为略有不同。
当SELECT语句中没有使用聚合函数时,GROUP BY语句仅仅将结果集按照指定的列进行分组而已。
(adsbygoogle = window.adsbygoogle || []).push({});
当SELECT语句中使用聚合函数时,GROUP BY语句将对结果集进行分组处理,并对每组数据应用聚合函数进行计算。