首頁 >資料庫 >mysql教程 >MERGE 語句如何檢索 SQL Server INSERT 作業中產生的識別碼和來源資料?

MERGE 語句如何檢索 SQL Server INSERT 作業中產生的識別碼和來源資料?

Barbara Streisand
Barbara Streisand原創
2024-12-29 15:54:121005瀏覽

How Can MERGE Statement Retrieve Generated Identity and Source Data in SQL Server INSERT Operations?

插入...合併...選擇:利用MERGE 檢索產生的識別

在SQL Server 中,INSERT... SELECT語句允許將資料從另一個表或查詢插入到目標表中。然而,從多個來源提取值時它有其限制。有使用 MERGE 語句的解決方案,該語句可以檢索插入的資料和來源資料。

為了說明這一點,請考慮以下情況:

INSERT INTO Table3 (Column2, Column3、Column4、Column5)<br>SELECT null, 110, Table1.ID, Table2 .Column2<br>FROM Table1<pre class="brush:php;toolbar:false"> JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
 JOIN Table2 on Table1Table2Link.Column2=Table2.ID

需要從 Table3 和 Table2.ID 擷取產生的識別 (Inserted.ID) 並將它們插入到臨時表或變數中。雖然 OUTPUT 子句通常用於此目的,但它無法從不同的表中提取資料。

解決方案在於使用 MERGE 來填入表,而不是 INSERT...SELECT。這允許存取輸出子句中插入的值和來源值:

MERGE INTO Table3 USING<br>(<pre class="brush:php;toolbar:false">SELECT null as col2, 
       110 as col3, 
       Table1.ID as col4, 
       Table2.Column2 as col5,
       Table2.Id as col6
FROM Table1
JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
JOIN Table2 on Table1Table2Link.Column2=Table2.ID

) AS s ON 1 = 0 --總是不匹配
當不匹配時
插入(Column2、Column3、Column4、 Column5)
值(s.col2, s.col3, s.col4, s.col5)
輸出Inserted.ID, s.col6
INTO @MyTableVar (insertedId, Table2Id);

透過使用MERGE,OUTPUT子句可以同時取得插入的識別(Inserted.ID)和 Table2 中的值(Table2.ID),並將它們插入到 @MyTableVar 中以供進一步使用正在處理。

以上是MERGE 語句如何檢索 SQL Server INSERT 作業中產生的識別碼和來源資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn