从一个表到另一个表的Postgresql更新列

从一个表到另一个表的Postgresql更新列,postgresql,Postgresql,如何从表1库存id更新表2中的库存id 到目前为止我已经试过了 UPDATE TABLE2 SET inventory_id=t1.inventory_id FROM TABLE2 t2 INNER JOIN TABLE1 t1 ON t1.test_id = t2.test_id WHERE t1.test_id = t2.test_id; 但这会将表2中inventory_id的所有值设置为1,而不是我的预期结果 TABLE1 inventory_id test_id 1

如何从表1库存id更新表2中的库存id

到目前为止我已经试过了

UPDATE TABLE2
SET 
inventory_id=t1.inventory_id
FROM TABLE2 t2
INNER JOIN
TABLE1 t1
ON t1.test_id = t2.test_id
WHERE t1.test_id = t2.test_id;
但这会将表2中inventory_id的所有值设置为1,而不是我的预期结果

TABLE1
inventory_id     test_id
1                         26
2                         56
3                         12
4                         67
这样就变成这样了

TABLE2
test_id       inventory_id
12              3
26              1
56              2
67              4
各国:

(……)

来自项目

一种表表达式,允许来自其他表的列显示在
其中
条件和更新表达式。它使用与相同的语法
SELECT
语句的
FROM
子句;例如,的别名 可以指定表名不要将目标表重复为
from\u item
,除非您打算自联接(在这种情况下,它必须在
from\u item
中显示别名)

(强调:我)

因此,以下是您想要的:

UPDATE table2 t2
       SET inventory_id = t1.inventory_id
       FROM table1 t1
            WHERE t1.test_id = t2.test_id;


您几乎已经拥有了它,但似乎被您在其他DBMS中看到的语法弄糊涂了,并将它们混合在一起。

通常PostgreSQL更新连接语法应该给出:

UPDATE TABLE2 t2
SET 
t2.inventory_id=t1.inventory_id
FROM TABLE1 t1
WHERE t1.test_id = t2.test_id;

提问并展示您已经尝试过的内容。解释失败的原因/原因。具体点(错误消息、意外结果等)。@stickybit对此表示抱歉。我已经更新了我的问题。
UPDATE table2 t2
       SET inventory_id = t1.inventory_id
       FROM table1 t1
            WHERE t1.test_id = t2.test_id;
UPDATE TABLE2 t2
SET 
t2.inventory_id=t1.inventory_id
FROM TABLE1 t1
WHERE t1.test_id = t2.test_id;