exists的用法 python_sql-exists、not exists的用法
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的用法相关推荐
- mysql not exists 用法_mysql 子查询 exists 和 not exists使用方法和实例
MySQL EXISTS 和 NOT EXISTS 介绍 SELECT ... FROM table WHERE EXISTS (subquery) 该语法可以理解为:将主查询的数据,放到子查询中做条 ...
- in和exists以及not in 和not exists有什么不同?(笔记)
exists 和 in 1.原理 通过使用EXISTS,Oracle会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间.Oracle在执行IN子查询时,首先执行子查询,并将获得的结 ...
- 【转】oracle in和exists、not in和not exists原理和性能探究
转自http://www.2cto.com/database/201310/251176.html 对于in和exists.not in和not exists还是有很多的人有疑惑,更有甚者禁用not ...
- 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 ...
- IN和EXISTS、not in 和not exists的效率详解
从效率来看: 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<& ...
- mysql的exists与inner join 和 not exists与 left join 性能差别惊人
由于客户数据量越来越大,在实践中让我发现mysql的exists与inner join 和 not exists与 left join 性能差别惊人. 我们一般在做数据插入时,想插入不重复的数据,或者 ...
- mysql中的exists嵌套_基于mysql 的exists 嵌套查询的详解
select Sname from Student where not exists (select * from Course where not exists (select * from SC ...
- java attributes用法_C#中的Attributes的用法
今天研究了一下C#中的Attributes的用法,感觉很有用,现总结以下: 在前台用JS写的脚本方法,除了可以直接用在前台控件的属性中,还可以在后台运用. 即在后台页面加载时,调用JS方法.语法格式有 ...
- python findall函数用法_Python--re模块的findall等用法
1)正则表达式含义 . # 点可代表一切字符 \ # 起转义作用 [...] # 指代方括号中的任意字符 \d # 指代数字0-9 \D # 指代非数字 \s # 指代一切空格,包括tab制表符.空格 ...
最新文章
- 面试:那些问哭你的Redis分布式锁!
- Git之深入解析如何重写提交历史
- CentOS 6 编译安装subversion-1.8.10+Apache2.4
- 对一个可进行带括号 加减乘除运算类的分析
- 去掉 iOS 导航栏返回按钮文本三种方案
- python一个函数调用另一个函数_python下如何在目录下让Python文件去调用另一个文件内的函数或类...
- ES6 let 与 const 与 var 的区别与使用
- java.lang.Exception: Test class should have exactly one public constructor
- Linux系统管理--Centos6服务管理
- Adobe公司和谷歌公司共同开发的字体-思源黑体提供下载
- 并行化:你的高并发大杀器
- F - 喜欢砍竹子的黑泽明
- 能否在计算机界面保存快捷方式,详细教您清理1kb快捷方式病毒
- 投影仪的对比度多少合适,当贝X3高亮对比度和电视基本一样
- clang: error:clang frontend command failed due to signal
- vue3封装-自定义audio音频播放【拖拽进度条,点击进度条,快进,后退,音量加减】思路
- 编译原理中的first集,follow集和selec集的小解
- XML格式化在线工具
- PageHelper分页永远返回第一页数据
- 用谷歌浏览器检查功能实现精灵图