GROUP BY是SQL中用来进行数据分组的语句,这个语句使用时稍有不慎就会报错。
GROUP BY
作用
GROUP BY语句是将查询到的数据进行分组,分成各个区域,再对每个区域的数据进行处理。使用
比如有一个“student”表保存了本班学生的个人信息和选修的课程等数据。
SELECT stu_name,course FROM student;
这个查询语句会返回每个同学所选的课程,有许多重复课程。
如果查看每个课程选择的人数:
SELECT course,COUNT(*) FROM student GROUP BY course;
这将返回学生选择每个课程的总和,因为ORDER BY子句依据course字段将数据按照课程名称分组,名称相同课程合并到了一组,再通过COUNT()*函数计算重复的数量,得到总和值,也就是学生数。
- 注意
如果这么写:
SELECT stu_name,course FROM student GROUP BY course;
就会报错!因为查出stu_name和course两列数据后,数据库根据GROUP BY后的course字段进行分组,这样课程名相同的数据分到了一组,最后只会以一行的数据显示。
那么问题来了,stu_name字段的数据呢?这个字段并没有进行分组,也就是说该字段数据没有像course字段一样合并,问题就是在这里:数据库并不能显示出这样“一对多”的数据,同时显示合并后的course字段和未合并的stu_name字段在一行(因为一个数据格只能放一个数据)。