在 SQL Server 中插入...合并...选择
在 SQL Server 中,INSERT INTO...SELECT 语句允许您将 SELECT 查询中的数据插入到目标表中。但是,当 SELECT 查询涉及到多个表的数据时,OUTPUT 子句无法跨不同表捕获数据。
引入 MERGE
要解决此问题,可以考虑使用合并语句。 MERGE 将 INSERT、UPDATE 和 DELETE 操作组合到单个语句中。它允许您根据特定条件有条件地对目标行执行操作。
使用 MERGE 输出数据
要从插入表和源表中捕获数据,您可以在 MERGE 语句中使用 OUTPUT 子句。以下示例演示如何从多个表插入数据并输出 Inserted.ID 和 Table2.ID:
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 语句中:
以上是如何在 SQL Server INSERT 操作期间使用 MERGE 从多个表中捕获数据?的详细内容。更多信息请关注PHP中文网其他相关文章!