2011-07-09 4 views
2


親/子テーブルがあり、そのPKとFKを新しい値に更新したいとします。問題はoldParent IdsがOld Idsと一致する新しいものと同期する必要があることです。そう:自己結合表の列をマッピングする方法!

OldID | OldParentID | NewID | NewParentID 
    1   0   10   NULL 
    2   0   11   NULL 
    3   2   13   NULL 
    4   3   14   NULL 

を、次のように私は更新NewParentIDが必要:

私は一時テーブルとして、このデータを持っている

OldID | OldParentID | NewID | NewParentID 
    1   0   10   0 
    2   0   11   0 
    3   2   13   11 
    4   3   14   13 

答えて

0
declare @T table 
(
    OldID int, 
    OldParentID int, 
    NewID int, 
    NewParentID int 
) 

insert into @T 
select 1, 0, 10, null union all 
select 2, 0, 11, null union all 
select 3, 2, 13, null union all 
select 4, 3, 14, null 

update T1 
    set T1.NewParentID = coalesce(T2.NewID, 0) 
from @T as T1 
    left outer join @T as T2 
    on T1.OldParentID = T2.OldID 
+0

はあなたに感謝します。期待どおりに動作します。 – mahdiahmadirad