Skip to content

07.子查询

1. 子查询概述

1.1 定义

  • 概念:出现在 其他语句内部 的 select 语句,称为 子查询或内查询
  • 内部嵌套其他 select 语句 的查询,称为 外查询或主查询

1.2 分类

(1)按结果集的行列数不同

  • 标量子查询(结果集只有一行一列)
  • 列子查询(结果集只有一列多行)
  • 行子查询(结果集有一行多列)
  • 表子查询(结果集一般为多行多列)

(2)按子查询出现的位置

  • select 后面:仅仅支持标量子查询
  • from 后面:支持表子查询
  • where 或 having 后面:
    • 标量子查询(单行)
    • 列子查询(多行)
    • 行子查询
  • exists 后面(相关子查询):表子查询

1.3 子查询的使用

(1)放在 where 或 having 后面

  1. 标量子查询(单行子查询)
  2. 列子查询(多行子查询)
  3. 行子查询(多列多行)
① 标量子查询

子查询特点

  • 子查询放在 小括号内
  • 子查询一般放在 条件的右侧
  • 标量子查询,一般搭配着 单行操作符 使用 ><>=<= =< <>
  • 列子查询,一般搭配着多行操作符使用 IN、ANY/ SOME、ALL
  • 子查询的执行 优先于主查询执行,因为主查询的条件需要使用子查询的结果
② 多行子查询
  • 返回多行
  • 使用多行操作比较操作符
    操作符含义
    IN/NOT IN等于列表中 任意一个
    ANY/SOME和子查询返回的 某一个值 比较
    ALL+和子查询返回的 所有值 比较
③ 行子查询

行子查询:结果为一行多列或多行多列。(不常用)

Released under the MIT License.