SQL 语句中 exists和not exists的用法

原创 2018年04月17日 16:39:08
exists       (sql       返回结果集,为真)   
not       exists       (sql       不返回结果集,为真) 
如下: 
表A 
ID   NAME   
1       A1 
2       A2 
3       A3 

表B 
ID   AID   NAME 
1       1       B1 
2       2       B2   
3       2       B3 

表A和表B是1对多的关系   A.ID   =>   B.AID 

SELECT   ID,NAME   FROM   A   WHERE   EXIST   (SELECT   *   FROM   B   WHERE   A.ID=B.AID) 
执行结果为 
1       A1 
2       A2 
原因可以按照如下分析 
SELECT   ID,NAME   FROM   A   WHERE   EXISTS   (SELECT   *   FROM   B   WHERE   B.AID=1) 
---> SELECT   *   FROM   B   WHERE   B.AID=1有值,返回真,所以有数据

SELECT   ID,NAME   FROM   A   WHERE   EXISTS   (SELECT   *   FROM   B   WHERE   B.AID=2) 
---> SELECT   *   FROM   B   WHERE   B.AID=2有值,返回真,所以有数据

SELECT   ID,NAME   FROM   A   WHERE   EXISTS   (SELECT   *   FROM   B   WHERE   B.AID=3) 
---> SELECT   *   FROM   B   WHERE   B.AID=3无值,返回假,所以没有数据

NOT   EXISTS   就是反过来 
SELECT   ID,NAME   FROM   A   WHERE NOT   EXIST   (SELECT   *   FROM   B   WHERE   A.ID=B.AID) 
执行结果为 
3       A3 
=========================================================================== 
EXISTS   =   IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因 
SELECT   ID,NAME   FROM   A    WHERE ID   IN   (SELECT   AID   FROM   B) 

NOT   EXISTS   =   NOT   IN   ,意思相同不过语法上有点点区别 
SELECT   ID,NAME   FROM   A   WHERE ID NOT   IN   (SELECT   AID   FROM   B) 

sql语句中exists和in用法的区分

初学java两个多月,这两天在整理老师的笔记对数据库中的exists和in的用法分不清楚,从网上搜了些资料,作了点总结。 一、问题起因 起初是由两条语句执行结果不同,语句如下: --分析以下结果...
  • U___U
  • U___U
  • 2015-03-27 15:25:43
  • 5000

sql语句中的 in 、not in 、exists、not exists 详细用法说明和差别----not in失效

 2016攒课第二期之你听课我买单,快来攒你想听的课!     架构免费公开课报名     【UDN沙龙】Intel大拿分享HTML5时代的跨平台开发解 ...
  • hewusheng10
  • hewusheng10
  • 2016-04-15 11:16:43
  • 1362

sql中exists的用法及与in的比较

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False 有一个查询如下: 复制代码 代码如下: SELECT c.Cu...
  • zisongjia
  • zisongjia
  • 2016-09-19 11:52:32
  • 753

sql中exists和not exists用法

之所以要说这个问题,是因为项目中用到了not exists,但两者写的语句只有一点差别,结果一个有问题了,一个没问题。具体问题下面详细说明,先来看看exists如何应用。 exists: ...
  • u013038643
  • u013038643
  • 2017-05-14 11:16:54
  • 12037

sql语句if。。。else使用和exists使用

if exists (   select date from MonthStatisticOne where date = '2015-01-01 00:00:00'   )select 1...
  • yu12345678900
  • yu12345678900
  • 2013-12-11 15:22:39
  • 1485

SQL语句中exists/not exists的用法分析

1、Student: Sno Sname Ssex Sage Sdept 200215121 李勇 男 20 CS 200215122 刘晨...
  • wozengcong
  • wozengcong
  • 2015-05-18 13:20:06
  • 26445

SQL中EXISTS自己的一些用法和理解。

EXISTS 是判断是否存在,和in类似,但效率要比in高
  • zlhxiaohui
  • zlhxiaohui
  • 2014-10-11 19:45:25
  • 1280

hql 中 exists 用法, and 异常 解决

org.hibernate.QueryException: could not resolve property:  一、排查HQL语句中的类字段,看是否是java类中的字段,不要是...
  • lili518
  • lili518
  • 2017-09-08 09:34:16
  • 381

理解SQL语句中 Exists()

理解SQL语句中 Exists() exists对于主查询而言只有一个作用:返回ture或false,而其本身查询的結果集不具任何意义因此在子查询的Select命令语句的字段行中通常使用通用字符*或者...
  • zwzgood
  • zwzgood
  • 2009-06-17 09:56:00
  • 2110
收藏助手
不良信息举报
您举报文章:SQL 语句中 exists和not exists的用法
举报原因:
原因补充:

(最多只允许输入30个字)