为了账号安全,请及时绑定邮箱和手机立即绑定

sql总exists是通过什么来评判存在与否

sql总exists是通过什么来评判存在与否

翻阅古今 2019-05-13 09:15:43
sql:select*fromemployeesswherenotexists(select1fromdept_empdwhered.emp_no=s.emp_no)内表s:外表d:网上对exists的解释:exists是对外表作loop循环,每次loop循环再对内表进行查询我的疑问:外表是通过其中一个字段去loop内表,只要有一个字段存在,就是存在?还是外表是通过整条数据去跟内表匹配,是否存在,如果是这样,是不是不应是select1总之,没想明白,exists到底是用什么来判断是否存在的,一行记录,一行记录的一个字段,还是其他?
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

exists
指定一个子查询,检测行的存在。遍历循环外表,然后看外表中的记录有没有和内表的数据一样的。匹配上就将结果放入结果集中。具体sql语句如下:
SELECT
`user`.*
FROM
`user`
WHERE
EXISTS(
SELECT
`order`.user_id
FROM
`order`
WHERE
`user`.id=`order`.user_id
)
使用exists关键字进行查询的时候,首先,我们先查询的不是子查询的内容,而是查我们的主查询的表,也就是说,我们先执行的sql语句是:
SELECT`user`.*FROM`user`
然后,根据表的每一条记录,执行以下语句,依次去判断where后面的条件是否成立:
EXISTS(
SELECT
`order`.user_id
FROM
`order`
WHERE
`user`.id=`order`.user_id
)
如果成立则返回true不成立则返回false。如果返回的是true的话,则该行结果保留,如果返回的是false的话,则删除该行,最后将得到的结果返回。也可以和IN对比来分辩认识它们Sql语句中IN和exists的区别及应用
                            
查看完整回答
反对 回复 2019-05-13
  • 2 回答
  • 0 关注
  • 404 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信