EXISTS函数是返回boolean值,而不关心返回结果集内容吗? 那下面的这个怎么回事?

有两个表。TableIn和TableEx,其中两个人在表1和表2都存在:马艳艳和邓事文我执行这个语句:select*fromTableInwhereexists(sele... 有两个表。TableIn 和TableEx,其中两个人在表1和表2都存在 :马艳艳和邓事文

我执行这个语句:
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME);

exists子查询返回的是boolean值,那么它会返回true,主查询执行select * from TableIn,那么应该把TableIn表里的所有数据都返回,可是却返回了两条数据。

这是为什么呢?
展开
 我来答
samismiling
推荐于2016-06-05 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部
exist是语法,相当于in,不是函数(函数指的是dbms提供的功能,exist是sql语言的语法)

exist其实就相当于select * from TableIn的结果集和select BID from TableEx where BNAME=TableIn.ANAME的结果集的子集
如果是not exist则代表前者与后者的补集的子集
追问
你说exists取的是结果集的子集。 但是select BID from TableEx where BNAME=TableIn.ANAME 这个语句返回的是BID的值。这个怎么能从select * from TableIn中取子集呢?
追答
select子句不重要,两个集合比对的是实际的集合,不是你检索出的部分字段
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式