joswd

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

exists的实例解析
现有两个表
a:

 

 


b:

 

 


现有sql语句如下
select * from a where exists (select 1 from b where b.b_id = a.id);

执行结果如下:

 

 


含义解析:exists 的意思是用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
EXISTS(包括 NOT EXISTS )子句的返回值是一个BOOL值。 EXISTS内部有一个子查询语句(SELECT … FROM…), 我将其称为EXIST的内查询语句。其内查询语句返回一个结果集。 EXISTS子句根据其内查询语句的结果集空或者非空,返回一个布尔值。
意思就是,将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,那么带入内查询作检验的这一行数据,便会作为结果显示出来,反之则不显示

过程分析:首先外查询会将a变中的第一行数据带入exists的内查询中,通过主键关联检测是不是有数据能关联住,如果有返回true,并将a表中的第一行返回到前台,例如,a表中第一行是(1,张三),他会带入到b表中,通过id =1检测到能与b关联(因为b表中作主键的b_id也有值1),这样就会返回结果true,语句便会将这一行返回给前台,并不会在向下继续监测。然后在将a表第二行带入b表。然后第三行,,,,如果作为主键id中没有能找到b表b_id做关联的,那就返回false。sql不会将a表中的这行数据显示出来
not exists 与exists 相反
————————————————
版权声明:本文为CSDN博主「-你真好看-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/enbaoIT/article/details/103468779

posted on   joswd  阅读(317)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
 
点击右上角即可分享
微信分享提示