如何在子查询中使用列的值?
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;
我有这样的查询。
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;