Condividi tramite


Sottoquery in istruzioni UPDATE, DELETE e INSERT

Le sottoquery possono essere nidificate nelle istruzioni DML UPDATE, DELETE, INSERT e SELECT.

Nell'esempio seguente il valore nella colonna ListPrice della tabella Production.Product viene raddoppiato. La sottoquery nella clausola WHERE fa riferimento alla tabella Purchasing.ProductVendor per limitare le righe aggiornate nella tabella Product a quelle fornite da BusinessEntity 1540.

USE AdventureWorks2008R2;
GO 
UPDATE Production.Product
SET ListPrice = ListPrice * 2
WHERE ProductID IN
    (SELECT ProductID 
     FROM Purchasing.ProductVendor
     WHERE BusinessEntityID = 1540);
GO

Di seguito viene riportata un'istruzione UPDATE equivalente in cui è utilizzato un join:

USE AdventureWorks2008R2;
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 BusinessEntityID = 1540;
GO