#database > A scalar subquery is an ordinary `SELECT` query in parentheses that returns exactly one row with one column. > The `SELECT` query is executed and the single returned value is used in the surrounding value expression. > It is not always possible to figure out at compile time if a subquery can return more than one tuple in its result; - **表达式内**的子查询被解释为 scalar subquery - scalar subquery 是一个被括号包裹的普通 SELECT 查询 - 通常出现在 select list 、 where 和 having 语句中。 - 只能返回一行和一列,返回多行或多列则报错 - 但是也可以没有返回任何行,不报错,结果被认定为 NULL。 - 从逻辑上说结果仍然是一个 relation,但是 SQL 会隐式地提取出单个值 - 可以引用来自 surrounding query 中的变量,subquery 每次执行时将其视为常量。 - 示例: ```sql SELECT  username,  level,  (SELECT AVG(level) FROM Players) AS avg_level FROM  Players ``` # # Refs - https://cloud.google.com/spanner/docs/reference/postgresql/subqueries - https://www.postgresql.org/docs/current/sql-expressions.html#SQL-SYNTAX-SCALAR-SUBQUERIES