Поделиться через


Подзапросы в инструкциях UPDATE, DELETE и INSERT

Подзапросы вкладываются в инструкции языка DML UPDATE, DELETE, INSERT и SELECT.

В следующем примере удваивается значение столбца ListPrice таблицы Production.Product. Вложенный запрос в предложении 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

См. также

Основные понятия

Типы вложенных запросов

Другие ресурсы

Изменение данных в базе данных
INSERT (Transact-SQL)
UPDATE (Transact-SQL)
DELETE (Transact-SQL)
SELECT (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005