现检索没有学习任何一门课程的学生姓名:
SELECT SNAME
FROM S
WHERE EXISTS(
SELECT *
FROM C
WHERE NOT EXISTS
( SELECT *
FROM SC
WHERE SC.S#=S.S#
AND SC.C#=C.C#)
)
这样就好理解了。
如果该学生没有选任何一门课,则
select * from sc where sc.s#=s.s# and sc.c#=c.c# 为假
那麽 select * from c where NOT exists(select * from sc where sc.s#=s.s# and sc.c#=c.c# ) 为真,
该学生的姓名就会被查询出来。
你的题目正好与此相反,所以在第一个Exist前面加上 NOT 就可以了。
SELECT SNAME
FROM S
WHERE EXISTS(
SELECT *
FROM C
WHERE NOT EXISTS
( SELECT *
FROM SC
WHERE SC.S#=S.S#
AND SC.C#=C.C#)
)
这样就好理解了。
如果该学生没有选任何一门课,则
select * from sc where sc.s#=s.s# and sc.c#=c.c# 为假
那麽 select * from c where NOT exists(select * from sc where sc.s#=s.s# and sc.c#=c.c# ) 为真,
该学生的姓名就会被查询出来。
你的题目正好与此相反,所以在第一个Exist前面加上 NOT 就可以了。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货