本题目要求编写SQL语句,
检索出 sc
表中学号为S001的学生选修的而S003学号学生未选修的课程号。
注意:查询结果忽略顺序只对比数据。
提示:MSSQLServer 评测SQL语句。
表结构:
定义表结构的SQL语句如:
-- 学生选课成绩表
CREATE TABLE sc (
sno char(4) NOT NULL, -- 学生学号
cno char(4) NOT NULL, -- 课程号
grade decimal(4,1) DEFAULT NULL,
PRIMARY KEY ( sno , cno )
)
表样例
上述表结构对应的表样例如
sc
表:
输出样例:
输出样例如:
思路:
1.从"sc"表中选择课程号(cno)。
2.在子查询中,选择学生学号为'S001'的学生选修的课程号。
3.使用NOT IN子句来排除学生学号为'S003'选修的课程号。
4.最终的结果将返回满足条件的课程号。
select cno as 课程号
from sc
where cno in(SELECT cno FROM SC WHERE SNO IN('S001'))
and CNO not in
(select cno from sc where Sno IN('S003'))