[英]Postgresql update column from one table to another
如何從 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
條件和更新表達式中的表表達式。 這使用與SELECT
語句的FROM
子句相同的語法; 例如,可以指定表名的別名。 不要將目標表作為from_item
重復,除非您打算進行自連接(在這種情況下,它必須在from_item
中以別名出現)。
(重點:我)
所以按照你想要的:
UPDATE table2 t2
SET inventory_id = t1.inventory_id
FROM table1 t1
WHERE t1.test_id = t2.test_id;
您幾乎擁有它,但似乎對您可能在其他 DBMS 中看到的語法感到困惑,並將它們混合在一起。
通常 PostgreSQL UPDATE JOIN 語法應該給出:
UPDATE TABLE2 t2
SET
t2.inventory_id=t1.inventory_id
FROM TABLE1 t1
WHERE t1.test_id = t2.test_id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.