使用 INSERT 和 SELECT 子查詢插入資料列
INSERT 陳述式中的 SELECT 子查詢可以用來將一或多個其他資料表或檢視的值新增到資料表。使用 SELECT 子查詢也讓一個以上的資料列得以同時插入。
在下列範例中,INSERT 陳述式將 AdventureWorks2008R2 (它的 SalesReason 是 Marketing) 中的 Sales.SalesReason 資料表之所有資料列的某些資料插入另一個資料表中。
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
子查詢的選取清單必須與 INSERT 陳述式的資料行清單相符。若未指定資料行清單,則選取清單必須與要插入之資料表或檢視中的資料行相符。
INSERT...SELECT 陳述式的另一種用法是從 SQL Server 以外的來源插入資料。INSERT 陳述式中的 SELECT 可用於下列項目:
使用四部份名稱來參考位於連結的伺服器上的遠端資料表。如需詳細資訊,請參閱<使用連結伺服器名稱來識別資料來源>。
使用 OPENROWSET 來參考遠端資料表。如需詳細資訊,請參閱<使用特定名稱來識別資料來源>。
使用執行於遠端伺服器之查詢的結果集。如需詳細資訊,請參閱<使用傳遞查詢做為資料表>。