首页 >数据库 >mysql教程 >SQL Server的MERGE语句如何插入数据并输出不同表的多列?

SQL Server的MERGE语句如何插入数据并输出不同表的多列?

Linda Hamilton
Linda Hamilton原创
2024-12-27 10:04:14940浏览

How Can SQL Server's MERGE Statement Insert Data and Output Multiple Columns from Different Tables?

在 SQL Server 中使用 MERGE 插入和输出数据

在此查询中,我们寻求使用 SELECT 语句将数据插入到 Table3 中并捕获插入的 ID 和另一个表中的另一个列值。由于跨表引用,使用 OUTPUT 子句的初始尝试失败了。

为了克服此限制,我们利用 MERGE 语句。通过使用 MERGE 语句填充 Table3,我们可以在输出子句中利用插入数据和源数据中的值。

这是修改后的查询:

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 语句使用来自
  • OUTPUT 子句指定插入的 ID 和 Table2.ID 都应该输出到临时表@MyTableVar。
  • WHEN NOT MATCHED 子句确保插入数据,如果Table3 中尚不存在。

通过以这种方式使用 MERGE,我们可以插入数据并从中捕获附加信息在单个语句中跨多个表,包括插入的 ID。

以上是SQL Server的MERGE语句如何插入数据并输出不同表的多列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn