zukucode
主にWEB関連の情報を技術メモとして発信しています。

SQL UPDATE文で副問い合わせで取得した値を複数列に設定する方法

UPDATE文で、副問い合わせで取得した値を複数列に設定する方法を紹介します。

SETで指定する列を()で囲い、副問い合わせのSQL()で囲った列に対応するようにSELECTで取得します。

UPDATE A
SET (COL1, COL2, COL3) = (
  SELECT
    B.COL1,
    B.COL2,
    B.COL3
  FROM B
  WHERE
    --必要に応じて追加
    --A.COL1のように更新対象のテーブルAの値も使用可能
)

注意点

SELECTした結果がそのまま更新値となるので、SELECTした結果は必ず1行になる必要があります。(複数行取得してしまうとどの行の値を更新値とすればいいのかわからないので)

複数取得されるかどうかは実際にSQLを実行してみないとわからないので、テスト環境のデータでは再現しなかったが、本番のデータでエラーになってしまうということが考えられます。

必ずキー項目を条件に指定したり、取得結果が1件になる保証がある条件を指定する必要があります。


関連記事