PostgreSQL の複数の行を 1 つのステートメントで更新したいと考えています。次のような方法はありますか?
UPDATE table
SET
column_a = 1 where column_b = '123',
column_a = 2 where column_b = '345'
ベストアンサー1
使用することもできますupdate ... from
構文を変更し、マッピング テーブルを使用します。複数の列を更新する場合は、より一般化できます。
update test as t set
column_a = c.column_a
from (values
('123', 1),
('345', 2)
) as c(column_b, column_a)
where c.column_b = t.column_b;
好きなだけ列を追加できます。
update test as t set
column_a = c.column_a,
column_c = c.column_c
from (values
('123', 1, '---'),
('345', 2, '+++')
) as c(column_b, column_a, column_c)
where c.column_b = t.column_b;