20、GROUP BY分组

GROUP BY 分组是对指定一个或多个字段分组,使用分组可以较好地对数据结果分析和处理。

插入测试数据

向 course 表插入测试数据:

INSERT INTO course (course_name,teacher_id) VALUES
('毛概',1),
('线性代数',2),
('政治',3),
('程序设计语言',1),
('离散数学',2),
('编译技术',3),
('嵌入式基础',1),
('单片机原理',2),
('图像处理',3),
('数字信号处理',1),
('专业英语',2),
('网络编程',3);

单字段分组

先查看 course 表所有数据:

SELECT * FROM course;

以表 course 为例,需要查出所有课程教师相关信息,按照 teacher_id 字段分组可去除重复数据:

SELECT teacher_id 
FROM course GROUP BY teacher_id;

根据上面分组结果还可以使用 LEFT JOIN 连接查询分组:

SELECT c.teacher_id,t.* 
FROM course c LEFT JOIN teacher t ON c.teacher_id=t.id GROUP BY c.teacher_id;

多字段分组

可以使用 GROUP BY 按照 teacher_id、course_id 分组来展示所有教师的所有课程信息:

SELECT c.teacher_id,a.course_id,c.course_name,d.name
FROM 
student_course a 
INNER JOIN 
student b 
ON a.student_id=b.id 
INNER JOIN course c 
ON a.course_id=c.id 
INNER JOIN teacher d
ON c.teacher_id=d.id 
GROUP BY c.teacher_id,a.course_id;

参考资料:http://www.imooc.com/wiki/mysqllesson/mysqlgroupby.html

posted @ 2022-07-05 00:56  tiansz  阅读(56)  评论(0编辑  收藏  举报