Вставка строк с использованием вложенных запросов INSERT и SELECT

Вложенный запрос SELECT в инструкции INSERT может использоваться для добавления значений в таблицу из одной или нескольких таблиц или представлений. Использование вложенного запроса SELECT позволяет также одновременно вставлять более одной строки.

В следующем примере инструкция INSERT вставляет в отдельную таблицу некоторые данные из всех строк в таблице Sales.SalesReason базы данных База данных AdventureWorks2008R2, для которых SalesReason — это Marketing.

USE AdventureWorks2008R2;
GO
CREATE TABLE MySalesReason (
    SalesReasonID int NOT NULL,
    Name nvarchar(50),
    ModifiedDate datetime);
GO
INSERT INTO MySalesReason
    SELECT SalesReasonID, Name, ModifiedDate
    FROM AdventureWorks2008R2.Sales.SalesReason
    WHERE ReasonType = N'Marketing';
GO
SELECT SalesReasonID, Name, ModifiedDate 
FROM MySalesReason;
GO

Список выбора во вложенном запросе должен совпадать со списком столбцов в инструкции INSERT. Если список столбцов не указан, список выбора должен совпадать со столбцами в таблице или представлении, куда осуществляется вставка.

Другим вариантом использования инструкции INSERT...SELECT является вставка данных из источника, находящегося вне SQL Server. Подзапрос SELECT в инструкции INSERT может использоваться для: