子查询二
D.SQL Server Exists运算符
exists运算符是一个逻辑运算符,用于检查子查询是否返回任何行。如果子查询返回一行或多行,则exists运算符返回true。
以下是SQL Server exists运算符的语法:EXISTS (subquery)
在此语法中,子查询仅是select语句。子查询返回行后,exists运算符返回true并立即停止处理。
请注意,即使子查询返回null值,exists运算符也会计算为true
- 带子查询的exists返回null示例
以下示例返回customers表中的所有行:
在示例中,子查询返回包含null的结果集,这也导致exists运算符计算为true。
- EXISTS带有相关子查询示例
以下示例查找已下过两个以上订单的所有客户:
如果客户下达的订单小于或等于2,则子查询返回一个空结果集,该结果集导致exists运算符计算为false。
根据exists运算符的结果,客户是否包含在结果集中。
- exists与in示例
以下语句使用in运算符查找城市为San Jose的客户订单:
以下语句使用返回相同结果的exists运算符:
SQL中的EXISTS与IN的使用及效率
EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为in不走索引。但是看实际情况具体使用:in适合于外表大而内表小的情况;exists适合于外表小而内表大的情况。当A表数据与B表数据一样大时,in与exists效率差不多,可人选一个使用。