插入...合併...選擇:利用多個表的輸出值
假設您需要將資料插入目標中表並另外從插入操作涉及的其他表中檢索特定資訊。雖然 OUTPUT 子句可以方便地從插入的表中捕獲數據,但當從多個表中獲取值時,它就顯得不夠了。在這種情況下,MERGE 語句成為一種有效的解決方案。
要達到此目的,請放棄簡單的 INSERT...SELECT 方法,而採用 MERGE 語句。此變更可讓您利用 OUTPUT 子句中插入資料和來源資料的值。
這是一個說明性範例:
MERGE INTO Table3 USING ( 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 -- Always not matched WHEN NOT MATCHED THEN INSERT (Column2, Column3, Column4, Column5) VALUES (s.col2, s.col3, s.col4, s.col5) OUTPUT Inserted.ID, s.col6 INTO @MyTableVar (insertedId, Table2Id);
在此MERGE 語句中,臨時表或表格變數(@MyTableVar) 用於擷取Inserted.ID(Table3 的識別列)和Table2.ID。 ON 子句中不存在的相等條件 (1 = 0) 確保始終考慮所有傳入行進行插入和資料檢索。
因此,MERGE 語句有效地將資料插入 Table3 並同時填入 @MyTableVar使用插入表和來源表中的所需值。這使您可以將插入的資料與其他表中的相關資訊結合使用,從而顯著擴展插入操作的實用性。
以上是如何在 INSERT 操作期間從多個表中檢索輸出值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!