複数の列をまとめて更新する SQL 文

UPDATE 文の基本形式は次の通り。

UPDATE table_name
SET column_name = new_value
[WHERE condition];

複数の列を更新する場合、SQL 標準で定められている構文は次のようになる。

UPDATE table_name
SET column_name1 = new_value1
, column_name2 = new_value2
...
[WHERE condition];

OraclePostgreSQL ではカラム名と値をそれぞれまとめる次の記述もできる。

UPDATE table_name
SET (column_name1, column_name2, ...) = (new_value1, new_value2, ...)
[WHERE condition];

他のテーブルの内容を用いて更新する場合

標準に準拠するならサブクエリを使い、次のように記述する。

UPDATE table1 AS a
SET column1 = (SELECT b.columnX FROM table2 AS b WHERE ...)
, column2 = (SELECT b.columnY FROM table2 AS b WHERE ...)
...
[WHERE condition];

Oracle では次の書き方ができる。

UPDATE table1 AS a
SET (column1, column2, ...) =
  (SELECT b.columnX, b.columnY, ... FROM table2 AS b WHERE ...)
[WHERE condition];