插入...合并...选择:利用多个表的输出值
假设您需要将数据插入到目标中表并另外从插入操作涉及的其他表中检索特定信息。虽然 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中文网其他相关文章!