OracleのUPDATE SELECT(SELECTした結果でUPDATEするSQL)

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する)の使い方でした。

コメント