首页 > 试题广场 >

假设有必修课成绩表course,每位学生的期末考试成绩以及补

[单选题]
假设有必修课成绩表course,每位学生的期末考试成绩以及补考成绩都录入到course表中,学号为20190001的同学想查询一下自己未通过的课程的课程编号与课程名称,那么下面正确的sql语句是
create table `course`(
    `id` int(11) not null auto_increment,
    `sid` int(11) not null comment '学号',
    `cid` int(11) not null comment '课程编号',
    `cname` char(50) not null comment '课程名称',
    `score` int(11) not null comment '分数',
    primary key(`id`) 
)engine = innodb;

  • select distinct cid,cname from course where cid not in (select cid from course where score > 60 and sid=20190001)
  • select distinct cid,cname from course where cid in (select cid from course where score < 60) and sid=20190001
  • select distinct cid,cname from course where cid not in (select cid from course where score > 60) and sid=20190001
  • select distinct cid,cname from course where cid in (select cid from course where score < 60 and sid=20190001)
60分算不及格?
发表于 2021-09-07 15:28:53 回复(0)
考试成绩跟补考成绩都录入表中是重点,如果补考大于60  那也是通过了,所以查新条件为not>60
发表于 2021-05-12 19:50:22 回复(9)
这C有问题吧?只要这门课有人及格那这门课就不会在最终输出里?
发表于 2021-09-07 15:23:33 回复(2)
D为什么错?
发表于 2021-08-19 05:06:16 回复(7)
测试了下,发现C有问题,D是符合的。
C中如果有门课程该同学不及格但其他同学及格了,cid not in (select cid from course where score > 60)该语句会把这门课程给排除了,明显不对啊
发表于 2021-09-22 10:56:52 回复(1)
个人认为:
未通过的课程” 是指该同学在这门课的最高成绩 < 60,则可以按照课程分组,答案可以是:
select cid, cname
from course
where sid = 20190001
group by cid, cname
having max(score) < 60;


发表于 2023-08-22 14:58:32 回复(1)
这道题应该是要通过not in的特性来判断,通过条件来决定如果有一个不符合就不会输出结果,所以在补考及格的情况下通过not in,就会有及格和不及格的情况出现,这样就不会有返回值,所以也不会查询到课程,但是ABCD都没有达到这样的一个要求,A的话,如果同时判断好几门课程的话就会判断烂,D的话更是同时判断所有人的所有课程的成绩,更不对,所以说,这个题出的就有问题
发表于 2023-05-15 09:55:15 回复(0)
A和D就不用说了,外面的查询没有判断sid,只判断了分数(因为一个课程cid可能对应很多学生),直接排除。
等于60也算不及格所以排除B选项。

发表于 2021-06-16 00:57:06 回复(5)
题目说有补考,一般补考过了只能给60分。所以不能选B,选C
发表于 2023-07-26 19:29:26 回复(1)
答案应该是D,首先A不用说了都知道错,B的话如果有一门课其他同学没及格,但是他选了并且也及格了,但是也会被搜索出来;C其实同理,有一门课,其他同学及格了,他没及格,也会被排除,因为子查询是这门课只要有人及格就会被查出来,然后not in就是只要有人及格的课就不会被显示,但并不代表他一定及格了啊,别人及格和她没关系。所以子查询条件只限制分数是错的,必须把学号也一起限制住。D也符合小于60分的才叫不及格
编辑于 2023-03-13 11:19:06 回复(1)
B哪里错了?
发表于 2023-03-01 13:41:49 回复(0)
sid的检验放在子循环里面查出来的cid并不是真正的sid对应的不及格的课,再用假的cid查询结果查到了所有假的cid的学生信息了 所以d错
编辑于 2021-09-05 23:25:47 回复(0)