postgresql - Postgresql 将列从一个表更新到另一个表
问题描述
如何从 TABLE1 inventory_id 更新 TABLE2 中的 inventory_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;
但这将 TABLE2 中 inventory_id 的所有值设置为 1 而不是我的预期结果。
TABLE1
inventory_id test_id
1 26
2 56
3 12
4 67
TABLE2
test_id inventory_id
12
26
56
67
就这样变成了这样?
TABLE2
test_id inventory_id
12 3
26 1
56 2
67 4
解决方案
关于UPDATE
状态的文档:
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ] ... [ FROM from_item [, ...] ]
(...)
from_item
允许其他表中的列出现在
WHERE
条件和更新表达式中的表表达式。FROM
这使用与语句的子句相同的语法SELECT
;例如,可以指定表名的别名。不要将目标表重复为 afrom_item
,除非您打算进行自联接(在这种情况下,它必须在 中出现别名from_item
)。
(重点:我)
所以按照你想要的:
UPDATE table2 t2
SET inventory_id = t1.inventory_id
FROM table1 t1
WHERE t1.test_id = t2.test_id;
您几乎拥有它,但似乎对您可能在其他 DBMS 中看到的语法感到困惑,并将它们混合在一起。