SQL Server子查询的深入理解
当由where子句指定的搜索条件指向另一张表时,就需要使用子查询或嵌套查询。
1 子查询
子查询是一个嵌套在select、insert、update或delete语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。
1.1语法规则:
子查询的select查询总使用圆括号括起来不能包括compute或for browse子句如果同时指定top子句,则可能只包括order by子句子查询最多嵌套32层,个别查询可能会不支持32层嵌套任何可以使用表达式的地方都可以使用子查询,主要它返回的是单个值如果某个表只出现在子查询中而不出现在外部查询中,那么该表中的列就无法包含在输出中
1.2 语法格式:
where 查询表达式 [not] in(子查询)where 查询表达式 比较运算符 [any|all] (子查询)where [not] exists (子查询)
2 嵌套查询
嵌套查询是指将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询。
嵌套查询中上层的查询块称为外侧查询或父查询,下层查询块称为内层查询或子查询。SQL语言允许多层嵌套,但是在子查询中不允许出现order by子句,order by子句只能用在最外层的查询中。
嵌套查询的处理方法是:先处理最内侧的子查询,然后一层一层地向上处理,直到最外层的查询块。
2.1 简单的嵌套查询
子查询的运算符含有=、<>、<、>、<=、>=
三个查询:
第一个:查询年纪>25的老师所教的学生
第二个:查询年纪>25的老师
第三个:验证查询到的学生信息

对比:当子查询中的分那会的结果不是一个时,父查询无法正常工作

2.2 带IN的嵌套查询
当子查询返回一系列值时,适合带IN的嵌套查询。

2.3 NOT IN

2.4 SOME

2.5 ANY

2.6 ALL

2.7 EXIST

总结
到此这篇关于SQL Server子查询的文章就介绍到这了,更多相关SQL Server子查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SQL server插入报错:当 IDENTITY_INSERT 设置为 OFF 时不能为表 ‘XXX‘
这篇文章主要介绍了SQL server插入报错:当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘XXX‘ 中的标识列插入显式值的问题,该问题是给SQL server数据库中的某个表插入数据引起的报错,一般出现在该表为自增的情况下,本文给大家分享解决方法,需要的朋友可以参考下2023-09-09
揭秘SQL Server 2014有哪些新特性(1)-内存数据库
微软SQL Server 2014提供了众多激动人心的新功能,但其中最让人期待的特性之一就是代号为” Hekaton”的内存数据库了,内存数据库特性并不是SQL Server的替代,而是适应时代的补充,现在SQL Server具备了将数据表完整存入内存的功能。那么今天我们就先来看看内存数据库2014-08-08
SQL Server 复制需要有实际的服务器名称才能连接到服务器
今天在做sql Server 2005的实验的时候碰到的问题,问题描述很清楚,怀疑是我以前给计算机修改了名称而导致的.可以用select @@servername和select serverproperty ('servername')对照一下,两个的结果是否一样2012-06-06


最新评论