subquery / 子查询
子查询就是一张一次性 View。
sql
SELECT name, size
FROM (
SELECT name, count(inventory) as size
FROM Shop
Group By name
) AS AsTableName;原则上,都应该给子查询一个合适的名字。
Oracle 命名不需要 AS 。
子查询可以嵌套子查询,无限嵌套。
scalar subquery / 标量子查询
必须返回只有 1 行 1 列 的结果。如:“七彩虹”,“4090”
标量子查询 像 常数 一样,所以也可以出现在任何位置,无论是 WHERE 还是 SELECT。
correlated subquery / 关联子查询
sql
SELECT name, type, price
FROM Product AS P1
WHERE price > (
SELECT AVG(price)
FROM Product AS P2
WHERE p1.type = p2.type
)
注意子查询的作用域,p1.type = p2.type 只能放在 子查询中!