股票入门基础知识网 > 股票进阶 > 选股 > SQL中exists是怎么回事啊怎么用啊老师没讲懂呵呵高手都来帮忙啊 返回上一页

SQL中exists是怎么回事啊怎么用啊老师没讲懂呵呵高手都来帮忙啊(相关问题)

简问简答:(欢迎访问股市简问简答栏目,本栏目面向股市小白,不做复杂阐述,如要深入了解请访问其他高级栏目,谢谢合作.)
编辑 : 王远   发布时间: 2023.04.07 16:12:01   消息来源: 原创 阅读数: 166 收藏数: 0 + 收藏 +赞(0)
学数据库的时候你们老师一定那 选课那3个表做例子吧 题目查询选修了全部课程的学生的姓名 select Sname from studentWhere no
学数据库的时候你们老师一定那 选课那3个表做例子吧 题目查询选修了全部课程的学生的姓名 select Sname from studentWhere not exists (select * from Course where not exists (select * from sc where Sno=student.sno AND cno=Course.Cno))这是哪三个表
学生表:student

sno,sname
0001,张三
0002,李四
0003,xxxx
...

课程表Course
cno,cname
001,语文
002,数学
003,英语

选课表

sno,cno
0001,001
0001,002
0001,003
0002,001
0002,002
....

select Sname
from student
Where not exists
(select * from Course where not exists
(select * from sc where Sno=student.sno AND cno=Course.Cno))

咱们从最后一个select说起.

select * from sc where Sno=student.sno AND cno=Course.Cno
这个sql的意思就是遍历这三个表,
找到所有所有学生选修所有课程记的记录..

(select * from Course where not exists
(select * from sc where Sno=student.sno AND cno=Course.Cno))

那么这条sql,依据上条sql的意思是,就是选中上条sql的相反的条件,就是加入某个学生没有选某个课程,就把这个记录查出来,
假如学生0003没有选课程003,
学生0004没有选001等等.

那么最后
select Sname
from student
Where not exists
(select * from Course where not exists
(select * from sc where Sno=student.sno AND cno=Course.Cno))

这句就排除了所有没有选一门课的学生,只要某个学生没有选某们课,不管是哪一门,就在上面的sql过滤出来了,那么上句sql的相反的,
就是 not exists (不符合上面sql结果的)

就是选全部课程的学生了

我的表达意思不是很清楚,不知道能否看懂呢.....

not exists的含义你可以google出来,上面几位也说的很清楚了
这句三层嵌套语句就是这么个含义....

当然,举一反三,你也可以写出, 被全部学生都选的课程,,,被全部学生都不选的课程,,,呵呵...

声明:如本站内容不慎侵犯了您的权益,请联系邮箱:wangshiyuan@epins.cn 我们将迅速删除。

 

选股最新文章

MORE+
 

热词推荐

MORE+

股吧论坛最新帖子

MORE+