MySQL实现学生表,成绩表,课程表,老师表复杂查询,用到了join等高级特性
作者:互联网
学生表:学号,姓名,出生日期,性别
成绩表:学号,课程号,分数
课程表:课程号,课程名字
老师表:老师号,姓名
# 查询没选课程的学生人数
select count(1) from student s left join score sc on s.sid = sc.sid where sc.cid is null;
#查询选了课程的学生人数
select count(1) from (select s.sid from student s inner join score sc on s.sid = sc.sid group by sc.sid) t;
#查询出每门课程的及格人数和不及格人数
select sc.cid,c.`name`,sum(score >= 60) as 及格人数,sum(score < 60) as 不及格人数 from score sc,course c where sc.cid=c.cid group by sc.cid;
这里,顺便附上一张交集,并集图。这个图完全可以概括所有情况。
更多查询可以参考mysql经典问题四表查询(教师,学生,成绩,课程表),不过其中有些需要优化。
本文完整代码在。
标签:成绩表,join,课程,cid,查询,sc,score,sid,课程表 来源: https://www.cnblogs.com/ivy-xu/p/12403983.html