早教吧作业答案频道 -->英语-->
selectsname from swhere notexists(select* fromc wherenotexists(select* fromsc wheres.sno=sc.sno andsc.c
题目详情
select sname from s where not exists
( select * from c where not exists
(select * from sc where s.sno=sc.sno and sc.cno=c.cno));
原题是这样的:Find the students who take all the courses and list their names.(相当于查询这样的学生,没有一门课是他不选的)
上面的是答案,但是不知道not exists怎么理解
( select * from c where not exists
(select * from sc where s.sno=sc.sno and sc.cno=c.cno));
原题是这样的:Find the students who take all the courses and list their names.(相当于查询这样的学生,没有一门课是他不选的)
上面的是答案,但是不知道not exists怎么理解
▼优质解答
答案和解析
exists 与 not exists存在谓词,判断并返回布尔类型结果.
select sname from s
where not exists (select * from c where not exists (select * from sc where s.sno=sc.sno and sc.cno=c.cno));
下面这句你把where后面的连接条件去掉理解就是选了课的所有课号和学号,
select * from sc where s.sno=sc.sno and sc.cno=c.cno
下面这句把WHERE 后面的SNO的连接条件去掉理解就是
没有被选的课程信息
select * from c where not exists (select * from sc where s.sno=sc.sno and sc.cno=c.cno));
因为这个关系模式牵扯到三个表,整个代码中的WHERE都是连接条件,你不要在这里钻牛角尖.
整个句子是这个意思,
S表不存在这样的人(姓名),他的学号在SC表里出现,他的SC表的课号没有在C表出现.
换个角度理解就是这个学号的SC表的课号全部在C表出现了,那么这个学号就是选了所有课的学号,根据学号,又能从S表获得姓名.
两个否定逻辑判断推出肯定的学生姓名.
select sname from s
where not exists (select * from c where not exists (select * from sc where s.sno=sc.sno and sc.cno=c.cno));
下面这句你把where后面的连接条件去掉理解就是选了课的所有课号和学号,
select * from sc where s.sno=sc.sno and sc.cno=c.cno
下面这句把WHERE 后面的SNO的连接条件去掉理解就是
没有被选的课程信息
select * from c where not exists (select * from sc where s.sno=sc.sno and sc.cno=c.cno));
因为这个关系模式牵扯到三个表,整个代码中的WHERE都是连接条件,你不要在这里钻牛角尖.
整个句子是这个意思,
S表不存在这样的人(姓名),他的学号在SC表里出现,他的SC表的课号没有在C表出现.
换个角度理解就是这个学号的SC表的课号全部在C表出现了,那么这个学号就是选了所有课的学号,根据学号,又能从S表获得姓名.
两个否定逻辑判断推出肯定的学生姓名.
看了 selectsname ...的网友还看了以下:
有如下的SQL语句: Ⅰ. SELECT sname FROM s, sc WHERE grade6 2020-05-23 …
“把查询sc表和更新sc表的grade列的权限授予用户user1”的正确SQL语句是( )。 A.G 2020-05-23 …
“把查询sc表和更新sc表的grade列的权限受予用户user1”的正确SQL语句是______。A 2020-05-23 …
设有关系SC(sno, cno, grade)。执行SQL语句:SELECT sno, AVG(gr 2020-05-23 …
从学生选课信息表中找出无成绩的元组的SQL语句是()。A.SELECT*FROM sc WHERE 2020-05-23 …
有如下的SQL语句:Ⅰ.SELECT sname FROMs,sc WHERE grade<60Ⅱ. 2020-05-24 …
有如下的SOL语句:Ⅰ.SELECT sname FROM s,sc WHERE grade<60Ⅱ 2020-05-24 …
有如下的SQL语句:Ⅰ.SELECT sname FROMs,sc WHERE grade<60Ⅱ. 2020-05-24 …
“把查询sc表和更新sc表的grade列的权限授予用户user”的正确SQL语句是( )。A)GRA 2020-05-24 …
selectsname from swhere notexists(select* f 2020-06-14 …