Oracle テーブルのSELECTした結果でUPDATEするサンプル

環境
Oracle Database 11g Release 11.2.0.1.0 – 64bit Production
PL/SQL Release 11.2.0.1.0 – Production

構文
UPDATE {テーブル1}
SET {列1} = (SELECT {列A} FROM テーブル2 WHERE 条件式)
,{列2} = 値2
WHERE {条件式}
SELECTした結果でUPDATEします。
「UPDATE SET」で更新列と値を指定しますが、「値」をセットする箇所にSELECT文を挿入します。

操作例
1.user_tblテーブル

userno	username	    postnum	     addr
T123	東京太郎	    123-4567	     東京都品川区1-2-3

2.posttblテーブル

postnum   addr
123-4567  東京都品川区1-2-3
123-4568  東京都品川区4-5-6

3.UPDATE SELECTのサンプル
SQL構文

UPDATE USER_TBL 
SET
  ADDR = ( 
    SELECT
      ADDR 
    FROM
      POSTTBL 
    WHERE
      POSTNUM = '123-4568'
  ) 
  , POSTNUM = '123-4568' 
WHERE
  USERNO = 'T123';

説明
user_tblテーブルの「addr」を別テーブル「posttbl」テーブルの内容で更新します。

Oracle

Posted by arkgame