子查询【二】

子查询二

D.SQL Server Exists运算符

exists运算符是一个逻辑运算符,用于检查子查询是否返回任何行。如果子查询返回一行或多行,则exists运算符返回true。

以下是SQL Server exists运算符的语法:EXISTS (subquery)

在此语法中,子查询仅是select语句。子查询返回行后,exists运算符返回true并立即停止处理。

请注意,即使子查询返回null值,exists运算符也会计算为true

  1. 带子查询的exists返回null示例

以下示例返回customers表中的所有行:

  

在示例中,子查询返回包含null的结果集,这也导致exists运算符计算为true。

  1. EXISTS带有相关子查询示例

以下示例查找已下过两个以上订单的所有客户:

  

如果客户下达的订单小于或等于2,则子查询返回一个空结果集,该结果集导致exists运算符计算为false。

根据exists运算符的结果,客户是否包含在结果集中。

  1. exists与in示例

以下语句使用in运算符查找城市为San Jose的客户订单:

 

以下语句使用返回相同结果的exists运算符:

  

SQL中的EXISTS与IN的使用及效率

EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为in不走索引。但是看实际情况具体使用:in适合于外表大而内表小的情况;exists适合于外表小而内表大的情况。当A表数据与B表数据一样大时,in与exists效率差不多,可人选一个使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值