Inserimento di righe con sottoquery INSERT e SELECT
Tramite la sottoquery SELECT dell'istruzione INSERT è possibile inserire in una tabella i valori di una o più tabelle o viste. La sottoquery SELECT consente inoltre di inserire più righe contemporaneamente.
Nell'esempio seguente, l'istruzione INSERT inserisce in una tabella separata alcuni dei dati delle righe contenute nella tabella Sales.SalesReason del database AdventureWorks2008R2, in cui 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
L'elenco di selezione della sottoquery deve corrispondere all'elenco di colonne dell'istruzione INSERT. Se l'elenco di colonne non è stato specificato, l'elenco di selezione deve corrispondere alle colonne della tabella o vista in cui viene eseguito l'inserimento.
L'istruzione INSERT...SELECT consente inoltre di inserire i dati da un'origine esterna a SQL Server. Nell'ambito dell'istruzione INSERT, SELECT può essere utilizzata ai fini descritti di seguito:
Fare riferimento a una tabella remota in un server collegato utilizzando un nome composto da quattro parti. Per ulteriori informazioni, vedere Identificazione di un'origine dei dati tramite il nome di un server collegato.
Fare riferimento a una tabella remota utilizzando OPENROWSET. Per ulteriori informazioni, vedere Identificazione di un'origine dei dati tramite un nome ad hoc.
Utilizzare il set di risultati di una query eseguita in un server remoto. Per ulteriori informazioni, vedere Utilizzo di query pass-through come tabelle.