Inserimento di righe con sottoquery INSERT e SELECT
Tramite la subquery SELECT dell'istruzione INSERT è possibile inserire in una tabella i valori di una o più tabelle o viste. La subquery 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 AdventureWorks, in cui 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
L'elenco di selezione della subquery 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.