目前,这一系列语句基本上在父表和子表中执行一对一插入。我想知道如果子表上有多个共享相同链接数据的子行,我是否可以继续使用合并语句方法在父级中只插入一个语句。
MERGE INTO ParentTable PT
USING (SELECT field1, field2…
FROM @TempParentData TMP
INNER JOIN ThirdTable THR
ON THR.linkdata = PT.linkdata
WHERE THR.id = @ID) PT1
ON 1=2
WHEN not matched then
INSERT (field1, field2…
VALUES (field1, field2
OUTPUT PT1.LID
INTO @TempLinkData;
INSERT INTO ChildTable (field1, field2…
SELECT field1, field2…
FROM @TempParentData TMP
INNER JOIN ThirdTable THR
ON THR.linkdata = TMP.linkdata
WHERE THR.id = @ID
答案 0 :(得分:0)
在合并中的ParentTable字段上执行GROUP BY(即在USING子查询中),并将这些字段(以及任何IDENTITY主键)输出到带有OUTPUT子句且插入<的第二个临时表中/ em>内存表。
将第二个临时表连接到@TempParentData以获取INSERT子行所需的所有内容。