从一个表到另一个表的Postgresql更新列
如何从表1库存id更新表2中的库存id 到目前为止我已经试过了从一个表到另一个表的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
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;