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,列2) = (SELECT 列1,列2 FROM テーブル WHERE 条件1)
WHERE 条件2;
テーブルの複数列をSELECTした結果でUPDATEします。

操作例
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, POSTNUM) = ( 
    SELECT
      ADDR
      , POSTNUM 
    FROM
      POSTTBL 
    WHERE
      POSTNUM = '123-4568'
  ) 
WHERE
  USERNO = 'T123';

説明
USER_TBLテーブルの2つの列「addr」、「postnum」を別テーブル「posttbl」テーブルの内容で更新します。

Oracle

Posted by arkgame