1. ホーム
  2. sql

[解決済み】結合を使用したSQL更新クエリ

2022-03-23 18:59:09

質問

3つのテーブルの結合によって返される値を持つフィールドを更新する必要があります。

select
    im.itemid
    ,im.sku as iSku
    ,gm.SKU as GSKU
    ,mm.ManufacturerId as ManuId
    ,mm.ManufacturerName
    ,im.mf_item_number
    ,mm.ManufacturerID
from 
    item_master im, group_master gm, Manufacturer_Master mm 
where
    im.mf_item_number like 'STA%'
    and im.sku=gm.sku
    and gm.ManufacturerID = mm.ManufacturerID
    and gm.manufacturerID=34

を更新したい。 mf_item_number テーブルのフィールド値 item_master を、上記の条件で結合された他の何らかの値と結合する。

MS SQL Serverでこれを行うにはどうすればよいですか?

どのように解決するのですか?

UPDATE im
SET mf_item_number = gm.SKU --etc
FROM item_master im
JOIN group_master gm
    ON im.sku = gm.sku 
JOIN Manufacturer_Master mm
    ON gm.ManufacturerID = mm.ManufacturerID
WHERE im.mf_item_number like 'STA%' AND
      gm.manufacturerID = 34

わかりやすくするために... この UPDATE 節で指定されたテーブルのエイリアスを参照することができます。 FROM 節があります。そのため im この場合、有効なのは

一般的な例

UPDATE A
SET foo = B.bar
FROM TableA A
JOIN TableB B
    ON A.col1 = B.colx
WHERE ...