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/zhangsify/article/details/71937745

更多推荐

SQL语句中EXISTS的用法