SELECTの結果でUPDATEをかける(pgsql/mysql)

DB内で他のテーブルからSELECTした内容でUPDATEを行いたいときがある.
SELECTした内容をINSERTに使うINSERT~SELECT構文みたいなのもあるので,どうかなーと思ったら各DBMS毎に文法が違うのね…

PostgreSQLの場合
オデの日記@WEB系: postgresqlでSELECTした結果でUPDATEをかける
PostgreSQL/SQL/SELECT結果でUPDATE – yanor.net/wiki

UPDATE target_table
SET target_column = s.value
FROM (SELECT * FROM source_table) AS s
WHERE target_table.id = s.id

個人的にはSETとWHEREの間にFROMが入るのが直感的でない…と思う.

MySQLの場合
MySQL/SELECT結果でUPDATEする – 俺の基地
yoko_net Blog : 結合したSELECT結果でUPDATEするTips(for MySQL)

UPDATE target_table,source_table
SET target_table.taraget_column = source_table.source_column
WHERE target_table.id = source_table.id

個人的にはUPDATEの後に両方のテーブル名を並べるのがまぎらわしい…と思う.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください