【发布时间】:2016-08-10 23:03:40
【问题描述】:
我想知道为什么在FROM 子句中对表别名的引用是无效的,但在同一个子查询中使用WHERE 子句中的别名来引用列是有效的。
这里有两个示例查询:第一个产生错误relation "t1" does not exist,但第二个是有效的:
SELECT * FROM(SELECT * FROM existing_table WHERE conditioncol < 1000) AS t1
WHERE EXISTS(SELECT 1 FROM t1 WHERE t1.conditioncol < existing_table.conditioncol + 50)
SELECT * FROM(SELECT * FROM existing_table WHERE conditioncol < 1000) AS t1
WHERE EXISTS(SELECT 1 FROM existing_table WHERE t1.conditioncol < existing_table.conditioncol + 50)
请注意,这两个查询的唯一区别是第一个查询有FROM t1,而第二个查询在子查询中有FROM existing_table。
【问题讨论】:
标签: sql postgresql subquery