我创建了一个临时表,其中在同一个表中包含具有新 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 从层次结构中获取所有字段。
最佳答案
如果我正确理解了您的表结构,则在 @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
关于sql - 如何使用递归数据批量更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4993124/