子查询

subselect 是全查询的组件。

Read syntax diagramSkip visual syntax diagramselect-clausefrom-clausewhere-clausegroup-by-clausehaving-clause order-by-clause offset-clause fetch-clause isolation-clause

子查询指定从 FROM 子句中标识的表,视图或昵称派生的结果表。 派生可以描述为一个操作序列,其中每个操作的结果都是为下一个操作输入的。 (这只是描述子查询的一种方法。 用于执行派生的方法可能与此描述大相径庭。 如果为了获取正确的结果而实际不需要执行子查询的部分,那么可能执行也可能不执行这些部分。)

"SQL 查询" 中的 "授权" 部分描述了 子查询 的授权。

按如下顺序处理子选择的子句:
  1. FROM 子句
  2. WHERE 子句
  3. GROUP BY 子句
  4. HAVING 子句
  5. SELECT 子句
  6. ORDER BY 子句
  7. OFFSET 子句
  8. FETCH 子句
不能指定包含 ORDER BY 子句, OFFSET 子句或 FETCH 子句的子查询:
  • 在视图的最外层全查询中。
  • 在具体化查询表的外部全查询中。
  • 除非子查询括在括号内。
例如,以下内容无效 (SQLSTATE 428FJ):
SELECT * FROM T1
   ORDER BY C1
UNION
SELECT * FROM T2
   ORDER BY C1
以下示例 有效 :
(SELECT * FROM T1
   ORDER BY C1)
UNION
(SELECT * FROM T2
   ORDER BY C1)
注: 子查询中的 ORDER BY 子句不会影响查询返回的行的顺序。 仅当在最外层全查询中指定 ORDER BY 子句时,该子句才会影响返回的行的顺序。