複数の列をまとめて更新する 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];
Oracle と PostgreSQL ではカラム名と値をそれぞれまとめる次の記述もできる。
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];