Share via


Einfügen von Reihen mithilfe der Unterabfragen INSERT und SELECT

Mit einer SELECT-Unterabfrage in der INSERT-Anweisung fügen Sie einer Tabelle Werte hinzu, die aus einer oder mehreren anderen Tabellen oder Sichten stammen. Das Verwenden einer SELECT-Unterabfrage ermöglicht außerdem das gleichzeitige Einfügen mehrerer Zeilen.

Im folgenden Beispiel fügt die INSERT-Anweisung einige der Daten aus allen Zeilen der Sales.SalesReason-Tabelle in AdventureWorks2008R2, in denen SalesReason als Marketing angegeben ist, in eine separate Tabelle ein:

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

Die Auswahlliste der Unterabfrage muss mit der Spaltenliste der INSERT-Anweisung übereinstimmen. Wenn keine Spaltenliste angegeben ist, muss die Auswahlliste mit den Spalten in der Tabelle oder Sicht übereinstimmen, in die Daten eingefügt werden.

Eine weitere Verwendungsmöglichkeit der INSERT...SELECT-Anweisung ist das Einfügen von Daten aus einer Quelle außerhalb von SQL Server. Die SELECT- kann in der INSERT-Anweisung wie folgt verwendet werden: