Rom*_*mbé 2 sql sql-server sql-insert
我目前正在研究某种数据映射。假设我有以下三个表:
临时表
鲁尼德 | 文档编号 | 数量 英语 7 50 C 6 12
表格1
T1ID | 文档ID | 数量 1 5 10 2 6 20 3 6 50
表2
T2ID | 鲁尼德 | T1Id 1 乙 1 2 C 2 3D 3
在表中Table1,Table2列T1ID和T2ID是自动填充的标识列。我现在要做的是将值插入TemporaryTable到Table1并将值保存在列中RunID和TemporaryTable新生成的T1ID到Table2
结果表应如下所示:
表格1
T1ID | 文档ID | 数量 1 5 10 2 6 20 3 6 50 4 7 50 5 6 12
表2
T2ID | 鲁尼德 | T1Id 1 乙 1 2 C 2 3D 3 4 E 4 5 C 5
我想在output声明的帮助下做到这一点。像这样的东西:
CREATE TABLE #map(T1ID, RUNID)
INSERT INTO Table1(DocId, Amount)
OUTPUT inserted.T1ID, t.RunId INTO #map
SELECT t.DocId, t.Amount
FROM TemporaryTable t
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,因为我无法访问输出语句中的 t.RunId 。这怎么可能做到呢?
您可以使用MERGE命令和一些始终为假的条件来模拟您的插入,其中包含所有可用的列OUTPUT
MERGE Table1 t1
USING TemporaryTable t
ON 1=2
WHEN NOT MATCHED THEN
INSERT (DocId, Amount)
VALUES (t.DocId, t.Amount)
OUTPUT inserted.T1ID, t.RunId
INTO #map ;
Run Code Online (Sandbox Code Playgroud)