SQL Server子查询的深入理解

来自:网络
时间:2021-04-02
阅读:

当由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的老师

第三个:验证查询到的学生信息

SQL Server子查询的深入理解

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

SQL Server子查询的深入理解

2.2 带IN的嵌套查询

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

SQL Server子查询的深入理解

2.3 NOT IN

SQL Server子查询的深入理解

2.4 SOME

SQL Server子查询的深入理解

2.5 ANY

SQL Server子查询的深入理解

2.6 ALL

SQL Server子查询的深入理解

2.7 EXIST

SQL Server子查询的深入理解

总结

返回顶部
顶部