テーブルのレコードを更新する場合、
通常の構文はこんな感じで単純に条件を指定して一致したレコードに対して更新をかけます。
UPDATE TBL1
SET
col1 = 'hoge',
col2 = SYSDATE
WHERE
piyo = '更新条件';
テーブルに対して更新をかけるとき、
複雑な条件が無とシンプルに書けますが多くの場合、複雑な条件を指定しますよね。
条件によってはサブクエリ化して記述する法法もあると思いますが今日はインラインビューを使用したお話。
例としては以下のような感じです。
UPDATE
(
SELECT
T1.col1 AS name,
T1.col2 AS age,
T2.col1 AS prev_name,
T2.col2 AS prev_age
FROM
TBL1 T1,
TBL2 T2
WHERE
T1.col3 = T2.col3
)
SET
name = prev_name,
age = prev_age;
イメージ的には更新する対象をSELECTしてくる副問合せで書いてしまおう!
という事です。
SELECTした項目を使って外側のUPDATE文で更新をかけるので、
更新したい項目は内側のSELECT文で全て取得する必要があります。
別のテーブルのデータを使って目的のテーブルデータを更新したい場合などに便利です。
スポンサーリンク
スポンサーリンク