博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Not exists嵌套调用例子
阅读量:4596 次
发布时间:2019-06-09

本文共 844 字,大约阅读时间需要 2 分钟。

查询选修了所有课程的学生的学号,姓名,年龄

select sno,sname,datediff(YYYY,birthdate,getdate()) 年龄

from student
where not exists(select *      
     from course
        where not exists(select *
          from sc
          where sno=student.sno
and SC.CNo=course.cno));

 

这个查询,查出的是选择全部课程的学生的姓名。

对于这个语法,要分步理解,从最下边的where看起,从下往上去看。
最下边的一个select(not exists后边)是把学生编号和课程编号带入,结果是查询学生选课的记录。加上not exists,就是学生没选课,那么加上前边的从课程表的select,就是查询出学生没选的课程。最后在上面又加了一个not exists,那么就是不存在没选课程的数据,也就是说,这个学生选择了所有的课程,才会符合记录。
这么说能明白么?看我下边分的段
----------------以下查询选择全部课程学生的姓名
SELECT Sname
FROM Student
WHERE NOT EXISTS --------此处不存在配合以上STUDENT,可知查询的是不存在没选课的学生
----------------以下查询学生没选课的信息
(SELECT *
FROM Course
WHERE
NOT EXISTS -------此处增加不存在,配合上面从COURSE的选择可知查询的是学生没有选的课
----------------以下查询查询学生选课的信息
(
SELECT *
FROM SC
WHERE Sno = Student.Sno AND Cno = Course.Cno
)
);

 

转载于:https://www.cnblogs.com/superqbb/archive/2012/04/26/2471665.html

你可能感兴趣的文章
51Nod 1089 最长回文子串 V2 —— Manacher算法
查看>>
$.ajax()方法详解
查看>>
Python基础之函数二
查看>>
null和undefined区别
查看>>
Unit06 - 抽象类、接口和内部类(下) 、 面向对象汇总
查看>>
软件测试工具
查看>>
input text 的事件及方法
查看>>
(转载)Android之有效防止按钮多次重复点击的方法(必看篇)
查看>>
简单多线程拷贝单文件v2.1
查看>>
2015.5.11站立会议
查看>>
Oracle PL/SQL编程之过程
查看>>
Spring(三)--Spring bean的生命周期
查看>>
TextClock的基本使用
查看>>
.NET技术
查看>>
listview图片错位
查看>>
Python-hashlib模块
查看>>
SP348 EXPEDI - Expedition
查看>>
全栈工程师之路——服务器端自动部署
查看>>
SequoiaDB 系列之七 :源码分析之catalog节点
查看>>
javascript高级函数
查看>>