Вставка строк с использованием вложенных запросов INSERT и SELECT
Вложенный запрос SELECT в инструкции INSERT может использоваться для добавления значений в таблицу из одной или нескольких таблиц или представлений. Использование вложенного запроса SELECT позволяет также одновременно вставлять более одной строки.
В следующем примере инструкция INSERT вставляет в отдельную таблицу некоторые данные из всех строк в таблице Sales.SalesReason базы данных AdventureWorks, для которых SalesReason — это Marketing.
USE AdventureWorks;
GO
CREATE TABLE MySalesReason (
SalesReasonID int NOT NULL,
Name nvarchar(50),
ModifiedDate datetime);
GO
INSERT INTO MySalesReason
SELECT SalesReasonID, Name, ModifiedDate
FROM AdventureWorks.Sales.SalesReason
WHERE ReasonType = N'Marketing';
GO
SELECT SalesReasonID, Name, ModifiedDate
FROM MySalesReason;
GO
Список выбора во вложенном запросе должен совпадать со списком столбцов в инструкции INSERT. Если список столбцов не указан, список выбора должен совпадать со столбцами в таблице или представлении, куда осуществляется вставка.
Другим вариантом использования инструкции INSERT...SELECT является вставка данных из источника, находящегося вне SQL Server. Подзапрос SELECT в инструкции INSERT может использоваться для:
Ссылки на удаленную таблицу на связанном сервере с использованием четырехкомпонентного имени. Дополнительные сведения см. в разделе Определение источника данных по имени связанного сервера.
Ссылки на удаленную таблицу с использованием OPENROWSET. Дополнительные сведения см. в разделе Идентификация источника данных по нерегламентированному имени.
Использования результирующего набора запроса, выполненного на удаленном сервере. Дополнительные сведения см. в разделе Использование передаваемых запросов в качестве таблиц.