SQL ServerのUPDATE JOIN(SELECT結果でUPDATEする)
SELECT結果でUPDATEする
SQL Serverでデータを更新するには「UPDATE」を使いますが、「UPDATE JOIN」というSELECTした結果でUPDATEする方法もあります。
「INSERT SELECT」のUPDATE版といった感じですね。「UPDATE SELECT」といった方がわかりやすいかも。
今回はSQL Serverの「UPDATE JOIN」の使い方を解説します。
--SELECTした結果でUPDATEする UPDATE {テーブル1} SET {テーブル1}.{列2} = {テーブル2}.{列2} ,{テーブル1}.{列3} = {テーブル2}.{列3} FROM {テーブル1} (INNER/LEFT) JOIN {テーブル2} ON {テーブル1}{列1} = {テーブル2}{列1} WHERE 条件 ;
UPDATEするテーブルをSELECTしたいテーブルとJOINし、その結果でUPDATEします。
結合は内部結合「INNER JOIN 」、外部結合「LEFT JOIN」のどちらでも有効です。
<サンプルデータ>
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 JOIN(SELECTした結果でUPDATEする)
--UPDATE JOINで更新する UPDATE emp_wk SET emp_wk.empname = emp.empname ,emp_wk.address = emp.address FROM emp_wk INNER JOIN emp ON emp_wk.empno = emp.empno AND emp.update_f = 1 ;
ここでは「emp_wk」テーブルと「emp」テーブルを内部結合し、「emp」テーブル「update_F=1」のSELECT結果で「emp_wk」テーブルを更新しました。
emp_wkテーブル
empno | empname | address |
D001 | 藤原花子 | 東京都渋谷区10-2-3 |
D002 | 田中太郎 | 東京都渋谷区2-1-1 |
同じことが「UPDATE ~ FROM」でも実現できます。こちらを参照ください。
以上、SQL ServerでSELECTした結果でUPDATEする「UPDATE JOIN」の使い方でした。
コメント