Inserindo linhas usando as subconsultas INSERT e SELECT
A subconsulta SELECT da instrução INSERT pode ser usada para adicionar valores a uma tabela, que sejam originários de uma ou mais tabelas ou exibições diferentes. O uso de uma subconsulta SELECT também permite a entrada simultânea de mais de uma linha.
No exemplo a seguir, a instrução INSERT insere em uma tabela separada dados de todas as linhas da tabela Sales.SalesReason em AdventureWorks2008R2, cujo 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
A lista de seleção da subconsulta deve corresponder à lista de colunas da instrução INSERT. Se nenhuma lista de colunas for especificada, a lista de seleção deve corresponder às colunas da tabela ou à exibição inserida.
Outro uso da instrução INSERT... SELECT é a inserção de dados de uma fonte externa ao SQL Server. SELECT, na instrução INSERT pode ser usada para o seguinte:
Referenciar uma tabela remota em um servidor vinculado usando um nome de quatro partes. Para obter mais informações, Identificando uma fonte de dados usando um nome de servidor vinculado.
Referenciar uma tabela remota usando OPENROWSET. Para obter mais informações, consulte Identificando uma fonte de dados usando um nome ad hoc.
Usar o conjunto de resultados de uma consulta executada em um servidor remoto. Para obter mais informações, consulte Usando consultas de passagem como tabelas.