OracleでSelect文を使ってUpdateする
クエリーの結果が1個のみの場合ではなく2個以上の場合のほうが多いと思われます。
Oracle SQL(データの更新 :UPDATE文の基礎、クエリー結果やEXISTS句を用いた更新処理)
UPDATE文におけるSET句では複数の更新を、副クエリーを用いて行うことが出来ます。
まづ、ALTER文によりTT_売上明細に、TM_商品の売上単価の項目を持つ様に変更します。
その後のUPDATE文を見れば、SETの後に括弧"()"で更新される項目名を列記し、その後でその項目に対応するデータを返す副クエリー文を"="で結びます。副クエリーのSELECT句の中のデータの並びはSET句でのデータの並びに合わせる必要があります。
より
こんな感じで
Update 更新対象 Set ( 更新項目1 ,更新項目2 ,・・・ ) = ( Select 更新内容1 ,更新内容2 ,・・・ From 取得対象 Where 取得対象.結合条件 = 更新対象.結合条件 and 取得対象.日付 = SYSDATE ) Where Exists ( Select 1 From 取得対象 Where 取得対象.結合条件 = 更新対象.結合条件 and 取得対象.日付 = SYSDATE )
- 取得対象のテーブルはJoinを使って複数テーブルにまたがる事も可能
- Where句では結合条件以外の条件で絞り込む事も可能
- Where Exists以下の括弧内でFrom以下に上のブロックと同じ内容を書かないと更新対象の絞込みが出来ない