#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