UPDATE、DELETE、および INSERT ステートメントでのサブクエリ

サブクエリは、UPDATE、DELETE、INSERT、および SELECT の各データ操作言語 (DML) ステートメントで入れ子にできます。

次の例では、Production.Product テーブルの ListPrice 列の値が 2 倍になります。WHERE 句のサブクエリでは Purchasing.ProductVendor テーブルを参照して、Product テーブルで更新される行を VendorID 51 の行だけに制限しています。

USE AdventureWorks;
GO 
UPDATE Production.Product
SET ListPrice = ListPrice * 2
WHERE ProductID IN
    (SELECT ProductID 
     FROM Purchasing.ProductVendor
     WHERE VendorID = 51);
GO

上のクエリと同等の、結合を使用した UPDATE ステートメントを次に示します。

USE AdventureWorks;
GO 
UPDATE Production.Product
SET ListPrice = ListPrice * 2
FROM Production.Product AS p
INNER JOIN Purchasing.ProductVendor AS pv
    ON p.ProductID = pv.ProductID AND pv.VendorID = 51;
GO