关于如何在SQL中使用EXISTS这个问题很多朋友还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!
1、语法EXISTS subquery 参数subquery是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。
2、有关更多信息,请参见 Select中有关子查询的讨论。
3、 结果类型Boolean 结果值如果子查询包含行,则返回 TRUE。
4、 说明 EXISTS(包括 NOT EXISTS )子句的返回值是一个BOOL值。
5、 EXISTS内部有一个子查询语句(SELECT ... FROM...), 我将其称为EXIST的内查询语句。
6、其内查询语句返回一个结果集。
7、 EXISTS子句根据其内查询语句的结果集空或者非空,返回一个布尔值。
8、一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。
9、 Exists是子查询的一种条件形式,通过判断Exists的选择表达式(括号内的部分)的结果,如果存在一行或多行结果记录,则Exists整个子查询结果为真,否则为假。
10、由于我们采用Exists来实现子查询,只需要关心是否存在满足条件的记录,所以选择表达式的选择列表采用*来实现,当然,你也可以在选择列表指明具体的某些列,但这些列将在整个搜索过程中被忽略。
11、 Exists实例 SQL 代码 复制select Resc_id from ***.res_Coachwhere EXISTS (select * from Res_Coach where Resc_id is null)查询原理:遍历***.res_Coach每一条,同时处理where条件(EXISTS (select * from Res_Coach where Resc_id=0) 判断结果为true或者false),为true时拿出该条,false时,放弃该条记录。
12、 SQL 代码 复制-- where条件中的子查询和主查询没关系select Resc_idfrom ***.res_Coachwhere EXISTS (select Rese_id from ***.res_Excellent where Rese_id Is null )-- 2、 where条件中得子查询和主查询有关系select Resc_idfrom ***.res_Coachwhere EXISTS (select Resc_id from ***.res_Coach where Resc_id Is null )实例备注:不管where条件中得子查询和主查询有没有关系,遍历主查询中得每一条时,判断where条件,exists结果为真,where条件返回true,拿出该条记录,where条件返回false, 不返回该记录。
13、 Exists 和 In 的选择 如果查询的两个表大小相当,那么用in和exists差别不大。
14、如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。
本文分享完毕,希望对大家有所帮助。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!