题目
有一张成绩表T20191106,表结构为SC(StuID,CID,Score),分部对应是学生ID,课程ID和学生成绩,有如下测试数据
查询出'001'课程分数大于'002'课程分数的学生学号 预期结果为
参考答案
create table T20191106
(
StuID int,
CID varchar(20),
Score int
);
insert into T20191106 values (1,'001',67);
insert into T20191106 values (1,'002',89);
insert into T20191106 values (1,'003',94);
insert into T20191106 values (2,'001',95);
insert into T20191106 values (2,'002',88);
insert into T20191106 values (2,'004',78);
insert into T20191106 values (3,'001',94);
insert into T20191106 values (3,'002',77);
insert into T20191106 values (3,'003',90);
--MySQL和SQL Server解法
select a.StuID from
(select StuID,Score
from T20191106 where CID='001') a,
(select StuID,Score
from T20191106 where CID='002') b
where a.StuID=b.StuID
and a.Score>b.Score
答案解析
根据题意,我们要分别先求出’001’课程和’002’课程的分数Score;
然后通过学生ID(StuID)来进行关联,并且只需要’001’课程的分数(a.Score)大于’002’课程的分数Score(b.Score)即可。
上述代码使用的是子查询关联来进行求解的,在工作中比较常用。