1. ホーム
  2. sql

[解決済み】PostgreSQLで同じクエリで複数行の更新を行う。

2022-03-31 19:18:22

質問

PostgreSQLの複数行を1回のステートメントで更新したいのですが、どうすればよいですか?以下のような方法はありますか?

UPDATE table 
SET 
 column_a = 1 where column_b = '123',
 column_a = 2 where column_b = '345'

解決方法は?

を使用することもできます。 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フィドルデモ