exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:

select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要

exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。

而 exists 与 in 最大的区别在于 in引导的子句只能返回一个字段,比如:

select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)

,in子句返回了三个字段,这是不正确的,exists子句是允许的,但in只允许有一个字段返回,在1,2,3中随便去了两个字段即可。

而not exists 和not in 分别是exists 和 in 的 对立面。

exists (sql 返回结果集为真)

not exists (sql 不返回结果集为真)

SELECT asset_name FROM asset_copyright_detail ab WHERE NOT EXISTS (SELECT 1 FROM contract_purchase_detail cpd WHERE cpd.asset_id=ab.asset_id)

#上面就是查看合同节目单表中是否存在版权中的节目

这里要排除一部分数据,用到NOT EXIST,即只要存在doctor_id在d_doctor_employee这张表的记录,在查询的时候就不会包含这部分doctor_id,由此就达到了目的。

即不管返回什么,只要返回有值就把这部分排除。所以用select 1 from table输出一栏列名为1,每行的值都常为1的数据。

总结:NOT EXIST() & SELECT 1 FROM TABLE经常可以搭配使用。

exists的用法 python_sql-exists、not exists的用法相关推荐

  1. mysql not exists 用法_mysql 子查询 exists 和 not exists使用方法和实例

    MySQL EXISTS 和 NOT EXISTS 介绍 SELECT ... FROM table WHERE EXISTS (subquery) 该语法可以理解为:将主查询的数据,放到子查询中做条 ...

  2. in和exists以及not in 和not exists有什么不同?(笔记)

    exists 和 in 1.原理 通过使用EXISTS,Oracle会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间.Oracle在执行IN子查询时,首先执行子查询,并将获得的结 ...

  3. 【转】oracle in和exists、not in和not exists原理和性能探究

    转自http://www.2cto.com/database/201310/251176.html 对于in和exists.not in和not exists还是有很多的人有疑惑,更有甚者禁用not ...

  4. sql中用EXISTS替代IN、用NOT EXISTS替代NOT IN显著变化

    sql如下所示: SELECT SUM(T.F1), SUM(T.F2), SUM(T.F3), SUM(T.F4), SUM(T.F5), SUM(T.F6), SUM(T.F7), SUM(T.F ...

  5. IN和EXISTS、not in 和not exists的效率详解

    从效率来看: 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<& ...

  6. mysql的exists与inner join 和 not exists与 left join 性能差别惊人

    由于客户数据量越来越大,在实践中让我发现mysql的exists与inner join 和 not exists与 left join 性能差别惊人. 我们一般在做数据插入时,想插入不重复的数据,或者 ...

  7. mysql中的exists嵌套_基于mysql 的exists 嵌套查询的详解

    select Sname from Student where not exists (select * from Course where not exists (select * from SC ...

  8. java attributes用法_C#中的Attributes的用法

    今天研究了一下C#中的Attributes的用法,感觉很有用,现总结以下: 在前台用JS写的脚本方法,除了可以直接用在前台控件的属性中,还可以在后台运用. 即在后台页面加载时,调用JS方法.语法格式有 ...

  9. python findall函数用法_Python--re模块的findall等用法

    1)正则表达式含义 . # 点可代表一切字符 \ # 起转义作用 [...] # 指代方括号中的任意字符 \d # 指代数字0-9 \D # 指代非数字 \s # 指代一切空格,包括tab制表符.空格 ...

最新文章

  1. 面试:那些问哭你的Redis分布式锁!
  2. Git之深入解析如何重写提交历史
  3. CentOS 6 编译安装subversion-1.8.10+Apache2.4
  4. 对一个可进行带括号 加减乘除运算类的分析
  5. 去掉 iOS 导航栏返回按钮文本三种方案
  6. python一个函数调用另一个函数_python下如何在目录下让Python文件去调用另一个文件内的函数或类...
  7. ES6 let 与 const 与 var 的区别与使用
  8. java.lang.Exception: Test class should have exactly one public constructor
  9. Linux系统管理--Centos6服务管理
  10. Adobe公司和谷歌公司共同开发的字体-思源黑体提供下载
  11. 并行化:你的高并发大杀器
  12. F - 喜欢砍竹子的黑泽明
  13. 能否在计算机界面保存快捷方式,详细教您清理1kb快捷方式病毒
  14. 投影仪的对比度多少合适,当贝X3高亮对比度和电视基本一样
  15. clang: error:clang frontend command failed due to signal
  16. vue3封装-自定义audio音频播放【拖拽进度条,点击进度条,快进,后退,音量加减】思路
  17. 编译原理中的first集,follow集和selec集的小解
  18. XML格式化在线工具
  19. PageHelper分页永远返回第一页数据
  20. 用谷歌浏览器检查功能实现精灵图

热门文章

  1. 【python】shutil模块
  2. 双目视觉焦距_一种基于可变焦相机的双目视觉测距方法与流程
  3. 杂项-数学软件:Maple
  4. 【学习笔记】前端入门自学笔记(二)
  5. 【人脸检测0】视频分解图片与图片合成视频
  6. android 渠道包测试,Android快速批量多渠道包的“蛋生”
  7. 轻时代来临 资深架构师分享手游五大设计要点
  8. 用C语言做一个走迷宫代码
  9. 傅立叶变换 数学推导
  10. C# FileSystemWatcher用法详解