OracleのUPDATE SELECT(SELECTした結果でUPDATEする)
OralceのUPDATEはUPDATE SELECT、つまりSELECTした結果でUPDATEすることができます。
UPDATEは「SET」で「更新列」と「値」を指定しますが、「値」をセットする箇所にSELECT文を挿入します。
--テーブルの値を更新する
UPDATE {テーブル}
SET {列1} = (SELECT {列A} FROM テーブル WHERE 条件)
,{列2} = 値2
,{列3} = 値3
WHERE {条件}
;
サンプルデータ
empテーブル
| empno | empname | add_no | address |
| A001 | 佐藤花子 | 100-0000 | 東京都渋谷区1-1-1 |
addnoテーブル
| add_no | address |
| 100-0000 | 東京都渋谷区1-1-1 |
| 100-0001 | 東京都渋谷区2-1-1 |
例1. UPDATE SELECT
--SELECTした結果でUPDATEする UPDATE emp SET address = (SELECT address FROM addno WHERE add_no = '100-0001') ,add_no = '100-0001' WHERE empno = 'A001';
| empno | empname | add_no | address |
| A001 | 佐藤花子 | 100-0001 | 東京都渋谷区2-1-1 |
ここではempテーブルの住所を別テーブル「addno」テーブルの内容で更新しました。
例2. UPDATE SELECT 複数列パターン
--SELECTした結果でUPDATEする UPDATE emp SET (address,add_no) = (SELECT address,add_no FROM addno WHERE add_no = '100-0001') WHERE empno = 'A001';
| empno | empname | add_no | address |
| A001 | 佐藤花子 | 100-0001 | 東京都渋谷区2-1-1 |
例1のUPDATEはさらに省略できます。UPDATEは複数列をまとめて記述することができます。ここではempテーブルの2つの列「address」「add_no」を別テーブル「addno」テーブルの内容で更新しました。
UPDATE SELECTするパターンとして2つとりあげました。
以上、OracleのUPDATE SELECT(SELECTした結果でUPDATEする)の使い方でした。

コメント