如何使用专栏'子查询中的值?

时间:2016-05-03 15:12:53

标签: sql postgresql postgresql-9.4

我有这样的查询。

SELECT col1,
       (SELECT another_col1 FROM table1 WHERE table1.date = col1) AS some_col
FROM table1
ORDER BY id;

但是我不能在子查询中使用 col1 ,它总是返回最后一条记录但不匹配。

如何在PostgreSQL中使用它?

2 个答案:

答案 0 :(得分:4)

你应该为表格添加别名!除非您要比较的列是唯一的,否则优化程序将采用当前级别的每一列E.G. - 如果要在相关查询中进行比较,并且内部表与外部表具有相同的列名,则优化器会认为您需要比较内部表中的列。

SELECT t.col1,
      (SELECT s.another_col1 FROM Table1 s WHERE s.date = t.col1) as some_col
FROM table1 t
ORDER BY t.id

答案 1 :(得分:0)

使用此

SELECT (SELECT another_col1 FROM table1 WHERE table1.date = col1) as
 col1,(SELECT another_col1 FROM table1 WHERE table1.date = col1) AS
 some_col FROM (select col1 as col1 from table1) as col1 ORDER BY id;
相关问题