提问 发文

子查询

微微菌

| 2023-06-19 13:45 149 0 0

子查询(Sub Query)是嵌套在主查询中的SELECT查询语句,即当一个查询是另一个查询的条件时,称之为子查询。子查询嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。

在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,首先必须创建一个查询来确定用户不知道但包含在数据库中的值,将一个查询块嵌套在另一个查询块的WHERE字句或HAVING短语的条件中查询块称为子查询或内层查询。上层的查询块曾为父查询或外层查询。子查询的结果作为输入传递回“父查询”或“外部查询”。父查询将这个值结合到计算中,以便确定最后的输出。

SQL语言允许多层嵌套查询,即一个子查询中还可以嵌套其他子查询。以层层嵌套的方式来构造程序正是SQL中"结构化"的含义所在。

子查询是本质上就是一个完整 的SELECT 语句,它可以使一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。子查询的输出可以包括一个单独的值(单行子查询)、几行值(多行子查询)、或者多列数据(多列子查询)。

可用三种语法来创建子查询:

  • comparison ANY | ALL | SOME
  • expression [NOT] IN (sqlstatement)
  • [NOT] EXISTS (sqlstatement)

其中,comparison是一个表达式及一个比较运算符,将表达式与子查询的结果作比较。expression用以搜寻子查询结果集的表达式。sqlstatement是SELECT 语句,遵从与其他 SELECT 语句相同的格式及规则。它必须括在括号之中。

子查询的使用规则如下:

  • 子查询必须自身是一个完整的查询。即它必须至少包括一个SELECT子句和FROM子句。
  • 子查询SELECT语句不能包括在ORDER BY子句中。因为ORDER BY字句只能对最终查询结果排序,如果显示的输出需要按照特定顺序显示,那么ORDER BY子句应该作为外部查询的最后一个子句列出。
  • 子查询“必须包括在一组括号中”,以便将它与外部查询分开。
  • 如果将子查询放在外部查询的WHERE或HAVING子句中,那么该子查询只能位于比较运算符的“右边”。
收藏 0
分享
分享方式
微信

评论

全部 0条评论

10603

文章

10.54W+

人气

19

粉丝

1

关注

官方媒体

轻松设计高效搭建,减少3倍设计改稿与开发运维工作量

开始免费试用 预约演示

扫一扫关注公众号 扫一扫联系客服

©Copyrights 2016-2022 杭州易知微科技有限公司 浙ICP备2021017017号-3 浙公网安备33011002011932号

互联网信息服务业务 合字B2-20220090

400-8505-905 复制
免费试用
微信社区
易知微-数据可视化
微信扫一扫入群