(1)SELECT * FROM `datatower-all`.TMP_DWD_POI t1
WHERE EXISTS (
  SELECT 1 FROM `datatower-all`.DWD_POI t WHERE t.POI_GRP_PHYSICAL_ID='100111'
)
解析:当DWD_POI表中有POI_GRP_PHYSICAL_ID='100111'的记录时,返回TMP_DWD_POI表的所有记录;当DWD_POI表中没有POI_GRP_PHYSICAL_ID='100111'的记录时,则无记录返回。
(主查询和exists的子查询无关联)

(2)SELECT * FROM `datatower-all`.TMP_DWD_POI t1
WHERE NOT EXISTS (
  SELECT 1 FROM `datatower-all`.DWD_POI t WHERE t.POI_GRP_PHYSICAL_ID='100111'
)
解析:当DWD_POI表中有POI_GRP_PHYSICAL_ID='100111'的记录时,则无记录返回;当DWD_POI表中没有POI_GRP_PHYSICAL_ID='100111'的记录时,返回TMP_DWD_POI表的所有记录。
(主查询和exists的子查询无关联)

(3)SELECT * FROM `datatower-all`.TMP_DWD_POI t1
WHERE EXISTS (
  SELECT 1 FROM `datatower-all`.DWD_POI t WHERE t.SOURCE_ID = t1.SOURCE_ID AND t.SOURCE_SYS=t1.SOURCE_SYS
  AND t.POI_GRP_PHYSICAL_ID='100111'
)
解析:当DWD_POI表中有t.SOURCE_ID = t1.SOURCE_ID AND t.SOURCE_SYS=t1.SOURCE_SYS AND t.POI_GRP_PHYSICAL_ID='100111'的记录时,返回TMP_DWD_POI表中与DWD_POI表中SOURCE_ID相同,SOURCE_SYS相同,POI_GRP_PHYSICAL_ID='100111'的记录,相当于返回TMP_DWD_POI表相对于NOT EXISTS后子查询的交集。
当DWD_POI表中没有t.SOURCE_ID = t1.SOURCE_ID AND t.SOURCE_SYS=t1.SOURCE_SYS AND t.POI_GRP_PHYSICAL_ID='100111'的记录时,则无记录返回。
(主查询和exists的子查询有关联)

(4)SELECT * FROM `datatower-all`.TMP_DWD_POI t1
WHERE NOT EXISTS (
  SELECT 1 FROM `datatower-all`.DWD_POI t WHERE t.SOURCE_ID = t1.SOURCE_ID AND t.SOURCE_SYS=t1.SOURCE_SYS
  AND t.POI_GRP_PHYSICAL_ID='100111'
)
解析:当DWD_POI表中有t.SOURCE_ID = t1.SOURCE_ID AND t.SOURCE_SYS=t1.SOURCE_SYS AND t.POI_GRP_PHYSICAL_ID='100111'的记录时,返回TMP_DWD_POI表中除去与NOT EXISTS后子查询相同记录后的记录,相当于返回TMP_DWD_POI表相对于NOT EXISTS后子查询的补集。

当DWD_POI表中没有t.SOURCE_ID = t1.SOURCE_ID AND t.SOURCE_SYS=t1.SOURCE_SYS AND t.POI_GRP_PHYSICAL_ID='100111'的记录时,返回TMP_DWD_POI表中所有记录。
(主查询和exists的子查询有关联)
判断主查询和exists的子查询是否有关联的方法:查看子查询的where条件中是否同时包含了子查询表的字段和主查询表的字段,若是,则说明进行了关联,若只有子查询表的字段,则说明未进行关联)

EXISTS 与 NOT EXISTS 的用法及返回结果的更多相关文章

  1. oracle中的exists 和not exists 用法 in与exists语句的效率问题

    博文来源(oracle中的exists 和not exists 用法):http://chenshuai365-163-com.iteye.com/blog/1003247 博文来源(  in与exi ...

  2. sql中exists和not exists的用法

    该文转载自:http://www.cnblogs.com/mytechblog/articles/2105785.html sql中exists,not exists的用法 exists : 强调的是 ...

  3. MySQL exists 和 not exists 的用法

    有一个查询如下: 1 SELECT c.CustomerId, c.CompanyName   2 FROM Customers c   3 WHERE EXISTS(   4     SELECT  ...

  4. 用 EXISTS 或 NOT EXISTS 用法

    项目中遇到这么个情况: t1表 和 t2表  都是150w条数据,600M的样子,都不算大. 但是这样一句查询 ↓ select * from t1 where phone not in (selec ...

  5. MySQL 子查询 EXISTS 和 NOT EXISTS(转)

    MySQL EXISTS 和 NOT EXISTS 子查询 MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT ... FROM table WHERE EXISTS ...

  6. (转)sql中 in 、not in 、exists、not exists 用法和差别

    exists (sql 返回结果集为真)  not exists (sql 不返回结果集为真)  如下:  表A  ID NAME  1    A1  2    A2  3  A3 表B  ID AI ...

  7. SQL中exists、not exists以及in、not in的区别和使用

    exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:   select name from student where sex = 'm' and mark exists(selec ...

  8. 转【】浅谈sql中的in与not in,exists与not exists的区别_

    浅谈sql中的in与not in,exists与not exists的区别   1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表 ...

  9. 浅谈sql中的in与not in,exists与not exists的区别

    转 浅谈sql中的in与not in,exists与not exists的区别   12月12日北京OSC源创会 —— 开源技术的年终盛典 »   sql exists in 1.in和exists ...

  10. MySQL 子查询 EXISTS 和 NOT EXISTS

    MySQL EXISTS 和 NOT EXISTS 子查询 MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT ... FROM table WHERE EXISTS ...

随机推荐

  1. 剑指offer:数组中重复的数字

    题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度 ...

  2. JSON数据格式解析

    JSON数据的语法规则 1.数据以键值对的形式 2.数据由逗号分隔 3.花括号保存对象 4.方括号保存数组 以PHP的数组为例: <?php $arr = array( "aaaa&q ...

  3. Mysql 5.7.21 单机多实例安装

    下载MySQL 5.7 二制包 [root@MySQL ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linu ...

  4. [转帖]中国公有云2018H1市场占有率

    IDC:阿里云中国第一 市场份额为2到9名总和   https://news.cnblogs.com/n/617838/ 1 月 21 日,市场研究机构 IDC 日前公布 2018 年上半年中国公有云 ...

  5. Node 多页面请求

    //功能:创建web服务器接收客户请求// http://127.0.0.1:8080/index 准备// http://127.0.0.1:8080/news 准备// public/index. ...

  6. linux运维掌握不熟练命令用法记录

    rename   :批量修改文件名 [root@Dannyserver test]# ls .txt .txt .txt .txt [root@Dannyserver test]# rename 't ...

  7. delphi dbgrid 修改、更新、删除

    https://zhidao.baidu.com/question/580946797.html DELPHI 中,使用 dbgrid显示数据.窗体上放置三个按钮,caption分别为:修改.删除.更 ...

  8. Python——socketsever模块

    1.作用:同时与多个客户端通信 import socketserver class MyServer(skcketserver.BaseRequestHandler): def handle(self ...

  9. map()实现zip()功能

    c = (map(lambda x,y:(x,y),[1,2,3],["abd","def","ghi"]))print(list(c)) ...

  10. linux sed的一些技巧

    sed -i '$a # This is a test' regular_express.txt 由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增『# This is a test ...