SQL ServerのUPDATE FROM(SELECT結果でUPDATEする)

SQL ServerのUPDATE FROM(SELECT結果でUPDATEする)

SQL Serverでデータを更新するには「UPDATE」を使いますが、「UPDATE ~ FROM」というSELECTした結果でUPDATEする方法もあります。

「INSERT SELECT」のUPDATE版といった感じですね。「UPDATE SELECT」といった方がわかりやすいかも。

今回はSQL Serverの「UPDATE FROM」の使い方を解説します。

通常のUPDATE文に「FROM」を追加します。「FROM」にはSELECTしたいテーブルとし、WHEREでテーブルの結合条件を記述します。

<サンプルデータ>

emp_wkテーブル

empno empname address
D001 加藤花子 東京都渋谷区1-1-1
D002 田中太郎 東京都渋谷区2-1-1

empテーブル

empno empname address update_f
D001 藤原花子 東京都渋谷区10-2-3 1
D002 田中太郎 東京都渋谷区2-1-1 0



例1. UPDATE FROM(SELECTした結果でUPDATEする)

emp_wkテーブル

empno empname address
D001 藤原花子 東京都渋谷区10-2-3
D002 田中太郎 東京都渋谷区2-1-1

ここでは「emp」テーブルの更新されたレコードで「emp_wk」をUPDATEしました。

条件としては、「emp」テーブルの「update_f = 1」である「empno」と同じナンバーを持つ「emp_wk」テーブルを更新しました。

つまり「empno」が「D001」のレコードですね。このレコードの「empname」と「address」を更新しました。

この「UPDATE ~ FROM」と同じことが「UPDATE JOIN」でも実現できます。詳細はこちらを参照してください。

SQL ServerのUPDATE JOIN(SELECT結果でUPDATEする)

以上、SQL ServerでSELECTした結果でUPDATEする「UPDATE FROM」の使い方でした。

コメント

  1. 匿名 より:

    「渋谷区」が「足立区」にアップデートされてしまっていますね

    • sqlserverマスター より:

      UPDATE後のデータに誤りがありましたので修正しました。
      ご指摘ありがとうございます。