【发布时间】:2018-08-28 00:27:23
【问题描述】:
此“order by”子句中的子查询是否被视为 scalar subquery 或其他内容(例如,table subquery)?
select id, field
from table1 t1
order by (select field
from table1
where table1.id = (select value1
from table2
where value1 = table1.id
and value2 = t1.id) asc
让我感到困惑的是,上面链接的 PostgreSQL 文档指出标量子查询只返回一行一列。 但是在这种用法中,子查询返回的行并不总是相同的行,而是根据外部查询返回的行而有所不同。因此,至少在 order by 子句中以这种方式使用时,更准确的描述可能是,它只返回一行和一列对于外部查询返回的每一行 em>。
跟进:在进一步阅读中,很明显这是一个标量子查询,虽然更具体地说是一个 correlated 标量子查询。 This 注释子查询可以是 correlated 或 uncorrelated,区别在于它是否“引用并依赖于外部查询中的值”。 This 进一步阐明 correlated 标量子查询“为其相关外部表集的每一行返回单个值 ”,而 noncorrelated标量子查询“将单个值返回到其包含的查询”。
【问题讨论】:
标签: sql postgresql