打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
sql exists和not exists用法

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)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
sql2008-sql2005创建表
sql exist-sql语句(十三) -bahe-sql's blog
SQL Exists的使用
SQL exists 判断 insert or update
exist和in的区别
多张表UPDATE用法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服