900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > mysql查询至少学过学号为“s001”同学所有课的其他同学学号和姓名

mysql查询至少学过学号为“s001”同学所有课的其他同学学号和姓名

时间:2021-09-09 02:20:53

相关推荐

mysql查询至少学过学号为“s001”同学所有课的其他同学学号和姓名

表、字段解释

表解释:

student(学生表)

sc(成绩表)

字段解释:

sno(学号)

cno(课程号)

一、分析

要想查询出至少学过学号为“s001”同学所有课的其他同学学号和姓名,分析步骤如下:

1、查询出学号为s001的学生学了哪些课程

2、查询出至少拥有这些课程的学生的学号

3、根据学号查出学生姓名

二、实现步骤

1.查询出学号为s001的学生学了哪些课程

代码如下(示例):

select o from sc where sc.sno = 's001'

2.查询出至少拥有这些课程的学生的学号

代码如下(示例):

select sc.sno from sc where o in (select o from sc where sc.sno = 's001')and sc.sno !='s001' group by sc.sno having count(o) >= (select o from sc where sc.sno ='s001')

3.根据学号查出学生姓名

代码如下(示例):

select s.sno,s.sname from student s where s.sno in(select sc.sno from sc where o in (select o from sc where sc.sno = 's001')and sc.sno !='s001' group by sc.sno having count(o) >= (select count(o) from sc where sc.sno ='s001'))

总结

注意:

1、需要注意是至少学过s001学生的所有课程的学生,不是至少学过一门也不一定是全都学了,而是至少全都学了,意思是可以多学但是不能少学

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。