Share 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 BusinessEntity 1540.

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

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

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