SQL语句中EXISTS的用法

SQL萌新一个,在这里记录一下自学过程中遇到的问题。
exists:强调的是,是否有返回集,不需要知道具体返回的是什么
比如这两个表:
在这里插入图片描述
输入查询语句:
select * from customer c where not exists(
select * from customer_goods cg where cg.customer_id = 1)
返回结果为空。
也就是说,exists后面的条件如果为真,那么正常执行之前的select语句,如果为假,整体语句返回为空。
以上结论只适用于exists子查询的只有自身的查询条件。如果子查询为false,那么整体没有返回值,

还有一个问题就是,如果exists的子查询中关联到外部的查询条件,就会扫描外部查询的表,如果返回的是true,就能准确的查出数据
但是一旦二者不添加关联关系。只会根据exists的返回是否有结果来判断。

一个关联外部条件的栗子:
在这里插入图片描述

还有一点:
exists与in的区别在于:in引导的子句只能返回一个字段,exists可以返回多个字段。

有些东西是从别人那里摘过来的= = 写博客只是为了记录自己学到的东西~
如有不对还请指教~

原博:https://blog.csdn.net/zhangsify/article/details/71937745

  • 12
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值