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 AdventureWorks
, in denen SalesReason
als Marketing
angegeben ist, in eine separate Tabelle ein:
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
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 2005. Die SELECT- kann in der INSERT-Anweisung wie folgt verwendet werden:
- Verweisen auf eine Remotetabelle auf einem Verbindungsserver mithilfe eines vierteiligen Namens. Weitere Informationen finden Sie unter Identifizieren einer Datenquelle mithilfe eines Verbindungsservernamens.
- Verweisen auf eine Remotetabelle mithilfe von OPENROWSET. Weitere Informationen finden Sie unter Identifizieren einer Datenquelle mithilfe eines Ad-hoc-Namens.
- Verwenden des Resultsets einer auf einem Remoteserver ausgeführten Abfrage. Weitere Informationen finden Sie unter Verwenden von Pass-Through-Abfragen als Tabellen.
Siehe auch
Konzepte
Hinzufügen von Zeilen mithilfe von INSERT und SELECT
Einfügen einer Zeile durch Verwenden von INSERT mit Werten
Beschränken einzufügender Zeilen mithilfe von TOP
Einfügen von Zeilen mit SELECT INTO