Join
SQL 更新列與另一個表列
我正在使用 Postgres 9.4,並且已經看到其他人提出相同(簡單)的問題,但他們的答案並沒有解決我的問題,我不明白為什麼。假設我有這些帶有公共數據的表 A 以及這些數據對應的類型,因此還有一個指標(我想在另一個表 B 中添加它):
gid, type, indicator 1 a '' 2 b '' 3 e '' 4 a '' 5 d ''
還有這個表B,它描述了類型及其各自的指標
type, indicator a alfa b alfa c beta d beta e gama
我正在執行此查詢,但
indicator
為每一行獲取 =alfa。UPDATE A SET indicator = B.indicator FROM B JOIN A aa ON B.type = aa.type
我正在尋找 A 的結果是這樣的:
gid, type, indicator 1 a alfa 2 b alfa 3 e gama 4 a alfa 5 d beta
希望這很清楚
Update Syntax for PostgreSQL
是不同的:[ WITH [ RECURSIVE ] with_query [, ...] ] UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ] SET { column_name = { expression | DEFAULT } | ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) | ( column_name [, ...] ) = ( sub-SELECT ) } [, ...] [ FROM from_list ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
在您的情況下,請嘗試以下查詢:
UPDATE TableA AS A SET indicator = B.indicator FROM TableB AS B WHERE B.type = A.type
結果:
gid type indicator -------------------------- 1 a alfa 2 b alfa 3 e gama 4 a alfa 5 d beta
SQLFiddle工作展示