Partilhar via


Subconsultas nas instruções UPDATE, DELETE e INSERT

As subconsultas podem ser aninhadas nas instruções UPDATE, DELETE, INSERT e SELECT de manipulação de dados (DML).

O exemplo a seguir dobra o valor na coluna ListPrice na tabelaProduction.Product. A subconsulta na cláusula WHERE referencia a tabela Purchasing.ProductVendor para restringir as linhas atualizadas na tabela Product para somente aquelas fornecidas por VendorID 51.

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

Aqui é uma instrução UPDATE equivalente usando uma junção:

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