我创建了一个临时表,我在同一个表中有重复的行,其中包含新的id。所有都必须根据旧ID
更新父ID创建的临时表包含字段(new_id,new_parentid,old_id,old_parentid) new_id,old_id和old_parentid由批量插入插入。
有没有人知道如何更新New_Parent_Id所以它将具有与旧的相同的结构?
declare @STARTNODE int
declare @tempTable table(New_Id int, New_Parent_Id int, Old_Id int, Old_Parent_Id int)
INSERT ORIGTABLE(OLD_GROUPID,OLD_GROUPPARENTID)
OUTPUT inserted.New_Id, inserted.Old_Id, inserted.Old_Parent_Id
into @tempTable(New_Id,Old_Id,Old_Parent_Id)
SELECT a.ID, a.PARENT_ID FROM SHOP_ORIGTABLE a
WHERE a.ID IN (SELECT ID FROM fn_allGroups(@STARTNODE))
其中函数fn_allGroups从层次结构中获取所有字段。
答案 0 :(得分:4)
如果我正确理解了你的表的结构,在@tempTable
上插入后你必须运行这个更新:
UPDATE a
SET a.new_parent_id = b.new_id
FROM @tempTable a
INNER JOIN @tempTable b ON b.old_id = a.old_parent_id