postgresql: INSERT INTO table_A (col_b) SELECT col_d from table_B WHERE table_B.col_c = table_A.col_a

postgresql: INSERT INTO table_A (col_b) SELECT col_d from table_B WHERE table_B.col_c = table_A.col_a

我有2张桌子。 Table答:

Col_a | Col_b
--------------
abc   | [null]
def   | [null]

Table乙:

Col_c | Col_d
-------------
abc   | 123
def   | 456

如何从 Table B 插入 Col_d 到 Table A 上的 Col_b? 这是我试过的:

INSERT INTO Table_A (Col_b) SELECT Col_d FROM Table_B
WHERE Col.c = (SELECT Col_a FROM Table_A);

WHERE 条件似乎不能这样使用。有什么想法吗?

我想你想要 update,而不是 insert:

update tablea a
set col_b = b.col_d
from tableb b 
where b.col_a = a.col_c

对于 tablea 的每一行,其 col_a 可以在 tableb 中找到,这会将 col_b 更新为存储在 col_d 中的值 tableb.