表结构:
student表(学生信息):
sc表(成绩):
course表(课程):
1.查询同时上数学和体育课的学生姓名:
select c.sname
from sc a inner join sc b inner join student c
on a.sid=b.sid and a.sid=c.sid
where a.cid='yy001' and b.cid='sx001'
结果:
总结:将sc表进行自连接,查出同时学习数学和体育的人,再连接student表,映射符合条件的记录。
2.查询学习了2门课程以上的学生姓名:
select a.sname as '姓名', COUNT(b.cid) as '学习课程数'
from student a inner join sc b
on a.sid=b.sid
GROUP BY b.sid HAVING COUNT(b.cid)>2
结果:
总结:将sc的查询结果进行分组,count统计分组个数,having筛选出个数大于二十的记录,连接student表,映射符合条件的记录