SQL 4

  • 查询课程编号为“0001”的课程比“0002”的课程成绩高的所有学生的学号
select a.学号
from (select 学号,成绩 from score where 课程号='0001') as a inner join 
(select 学号,成绩 from score where 课程号='0002') as b on a.学号=b.学号
where a.成绩=b.成绩

 原答案:

select a.学号
from (select 学号,成绩 from score where 课程号='0001') as a inner join 
(select 学号,成绩 from score where 课程号='0002') as b on a.学号=b.学号
inner join student as c on c.学号=a.学号
where a.成绩=b.成绩

原答案修改后的:

select a.学号
from (select 学号,成绩 from score where 课程号='0001') as a inner join 
(select 学号,成绩 from score where 课程号='0002') as b on a.学号=b.学号
where a.成绩=b.成绩
  • 查询学过编号为“0001”的课程并且也学过编号为“0002”的课程的学生的学号、姓名
select b.学号,b.姓名
from (select 学号,课程号 from score where 课程号='0001') as a 
inner join student as b on a.学号=b.学号
where a.学号 in (select 学号 from score where 课程号='0002')
  • 查询学过“孟扎扎”老师所教的所有课的同学的学号、姓名
select 学号,姓名
from student
where 学号 in (
select 学号 from score where 课程号 in (
select 课程号 from course where 教师号 in (
select 教师号 from teacher where 教师姓名='孟扎扎')
)
)

select a.学号,a.姓名
from student as a inner join score as b on a.学号=b.学号
inner join course as c on b.课程号=c.课程号
inner join teacher as d on c.教师号=d.教师号
where d.教师姓名='孟扎扎'
  • 查询没学过"孟扎扎"老师讲授的任一门课程的学生姓名
select distinct 姓名
from student
where 学号 not in (
select a.学号
from student as a inner join score as b on a.学号=b.学号
inner join course as c on b.课程号=c.课程号
inner join teacher as d on c.教师号=d.教师号
where d.教师姓名='孟扎扎')
  • 查询选修“孟扎扎”老师所授课程的学生中成绩最高的学生姓名及其成绩
select a.姓名,b.成绩
from student as a inner join score as b on a.学号=b.学号
inner join course as c on b.课程号=c.课程号
inner join teacher as d on c.教师号=d.教师号
where d.教师姓名='孟扎扎'
order by b.成绩 desc
limit 1
  • 查询至少有一门课与学号为“0001”的学生所学课程相同的学生的学号和姓名
select distinct a.学号,a.姓名
from student as a inner join score as b on a.学号=b.学号
where b.课程号 in (
select 课程号 from score
where 学号='0001') 
having 学号!='0001'

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值