如何在子查询中使用列的值?

How to use column' value in subquery?

我有这样的查询。

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

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

如何在 PostgreSQL 中使用它?

您应该为 table 起个别名!除非您要比较的列是唯一的,否则优化器将采用当前级别的每一列,例如- 如果您在相关查询中进行比较,并且内部 table 与外部 table 具有相同的列名,优化器会认为您是要比较内部 table 中的列].

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

使用这个

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;