【SQL】UPDATEで列の値を同じテーブルの値で更新する方法

このページでは、ORACLEデータベースのSQLで、UPDATE文で列の値を、同じテーブルの値で更新する方法を紹介しています。

UPDATE文のサンプルは↓で多数紹介していますので参考にしてください。
>>【SQL】UPDATE文の書き方:サンプル多数あり

UPDATEで列の値を同じテーブルの値で更新する方法

UPDATE文で、同じテーブルの値を使うときには、別表としてUPDATE句で取得します。

次のSQLでは、更新するTAB1テーブルをaとし、別表としてTAB1テーブルをbとして指定しています。aとbはINNER JOINで結合しています。

UPDATE 
    tab1 a
    inner join tab1 b ON a.col1 = b.col1
SET 
    a.col2 = b.col3
;

条件が一致したレコードは、COL2の値がCOL3の値に更新されます。

UPDATEで同じテーブルの値をSELECTして更新する方法

同じテーブルの値をSELECTする方法もあります。

先ほどのSQLを改造して、別表として呼び出すTAB1テーブルをSELECTして副問合せ(サブクエリ)として記述することもできます。

次のSQLでは、「(SELECT col1,col3 FROM tab1 )」として、別表をサブクエリーとして呼び出して使用しています。

UPDATE 
    tab1 a
    inner join (SELECT col1,col3 FROM tab1 ) b on a.col1 = b.col1
SET 
    a.col2 = b.col3
where
    a.col1 = '00001'
;

まとめ

UPDATEで同じテーブルの値を使うときは、別表として指定します。

また、副問合せ(サブクエリ)として同じテーブルをSELECTして更新することもできます。

この他にも、UPDATE文の様々な書き方を解説しております。
詳しくは「【SQL】UPDATE文の書き方:サンプル多数あり」で解説しているのでぜひ参考にしてください。