SQL合并语句-如何处理一对多插入?
目前,这一系列语句基本上在父表和子表中执行一对一的插入。我想知道当子表上有多个子行共享相同的链接数据时,是否可以继续使用merge语句方法在父表中只插入一条语句SQL合并语句-如何处理一对多插入?,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,目前,这一系列语句基本上在父表和子表中执行一对一的插入。我想知道当子表上有多个子行共享相同的链接数据时,是否可以继续使用merge语句方法在父表中只插入一条语句 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
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
对合并中的ParentTable字段(即在USING子查询中)执行GROUP BY,并将这些字段(连同任何标识主键)输出到第二个临时表中,其中包含output子句和插入的内存表 将第二个临时表连接到@TempParentData,以获得插入子行所需的一切