MSSQL_6- 子查询

目录

  • 概念
  • 应用


1.概念

嵌套在SELECT,INSERT,UPDATE,DELETE等语句中,充当中间结果集
子查询也称内部查询内部选择,包含子查询的语句称为外部查询外部选择
按返回值数量分为标量子查询和多值子查询;按子查询对外部的依赖分为独立子查询和相关子查询;按比较运算符可分为EXISTS,IN,SOME,ALL,ANY等多种形式。
注:

  • 根据可用内存和查询中的其它限制,一般可以嵌套32层
  • 凡是可以使用表达式的地方都可以使用子查询(须返回单值)。
2.应用

2.1 用在选择列表中
标量子查询(单值)
对比子查询与联接:许多子查询都可以使用联接,但在一些必须检查存在性的情况中,联接性更佳

2.2 含IN和EXISTS
1)IN引入的子查询结果是包含0个或多个值的列表,表示的是一种值的“等于”关系
2)EXISTS引入的子查询不产生任何数据,只返回TRUE/FALSE,表示**“存在”行为**。
3)所有IN或由ANY | ALL修改的比较运算符的查询都可以用EXISTS表示

2.3 NOT IN | NOT EXISTS
含有NULL值时,NOT EXISTS的执行效率更佳

2.4 含比较运算符的子查询
必须返回单值,否则出错。

2.5 批量比较:ANY、SOME或ALL
修改引入子查询的比较运算符(eg. =ALL/=ANY)。
SOME是与ANY等效的ISO标准。
ALL:WHERE表达式中,子查询返回的结果必须全部满足条件。
ANY:WHERE表达式中,子查询返回的结果至少有一个满足条件。

2.6 多层嵌套

3.补充

1)ntext,text,image数据类型不能用于子查询的选择列表中。
2)未修改的比较运算符相入子查询时,不能使用GROUP BY + HAVING子句。
3)除非指定了TOP,否则ORDER BY子句不能用于子查询中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值