Mysql查询至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名

表名、字段解释

student(学生表)
sc(成绩表)
course(课程表)
sno(学生学号)
cno(课程号)
sname(学生姓名)


一、分析

要查询出至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名,需要注意:
1、学号为s001的同学学了哪些课程
2、再根据s001所学的课程查出学了相关课程的学生学号
3、最后根据学号查询出对应学生的姓名

二、实现步骤

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

代码如下(示例):

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

2.根据s001所学的课程查出学了相关课程的学生学号

代码如下(示例):

select distinct(sc.sno) from sc where sc.cno in 
(select sc.cno from sc  where sc.sno = 's001') and sno!='s001'

3.根据学号查询出对应学生的姓名

代码如下(示例):

select s.sno,s.sname from student s where s.sno in 
(select distinct(sc.sno) from sc where sc.cno in 
(select sc.cno from sc where sc.sno = 's001')
and s.sno !='s001'
)

总结

要把题目中的问题分析成一个一个步骤,这样更好理解与处理

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值