Freigeben über


Unterabfragen in den Anweisungen UPDATE, DELETE und INSERT

Unterabfragen können in den Anweisungen UPDATE, DELETE, INSERT und SELECT der Datenbearbeitungssprache (DML, Data Manipulation Language) geschachtelt werden.

Das folgende Beispiel verdoppelt den Wert in der ListPrice-Spalte in der Production.Product-Tabelle. Die Unterabfrage in der WHERE-Klausel verweist auf die Purchasing.ProductVendor-Tabelle, um die in der Product-Tabelle aktualisierten Zeilen auf die zu beschränken, die von VendorID 51 angegeben wurden.

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

Nachfolgend ist eine gleichwertige UPDATE-Anweisung aufgeführt, die eine Verknüpfung verwendet:

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