PostgreSQLを使用して同じクエリで複数の行を更新する 質問する

PostgreSQLを使用して同じクエリで複数の行を更新する 質問する

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;

sql fiddle demo

おすすめ記事