2011-02-14 10 views
2

동일한 테이블에 새 ID가있는 행을 복제 한 임시 테이블을 만들었습니다. 모든 이전 ID의재귀 데이터로 테이블을 일괄 업데이트하는 방법

A는 임시 테이블을 생성에 따라 업데이트해야합니다 (NEW_ID, new_parentid, old_id, old_parentid) NEW_ID, old_id 필드를 가지고 있으며, 대량 삽입에 의해 old_parentid 삽입되는 부모의 id를 가지고있다.

누구나 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에 삽입 한 후 테이블의 구조를 이해 correclty 경우

+0

내가 당신에 받고 있지만, 아마도 간단한 예하는지 알아 확신을 당신의 행 데이터가 사물을 명확하게하는 데 도움이 될까요? – jlarson

답변

4

이 업데이트 실행해야합니다 :

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 
+0

매우 좋아 보입니다. –

관련 문제