2013-08-01 42 views
1

我有一個表與一個不同的表有關,我需要更改以指向不同的表。將密鑰遷移到新表

表A是被編輯我的移動ID,以點從表B舊表B新表。

我無法編輯現有表的模式。

表前(不能編輯模式)A之後

Unique_Id TableB_Id 
1   10 
2   11 
3   11 
4   12 

Unique_Id TableB_Id 
1   12 
2   13 
3   13 
4   13 

在那裏我有(儘管是在電子表格此刻)這映射

Old_Id  New_Id 
10   12 
11   13 
12   13 

很明顯,我不能去通過,並分別與1313取代10121112因爲那時TableB_Id欄會顯示爲13, 13, 13, 13

希望這是有道理的。有任何想法嗎?

回答

1

創建的表中調用Mapping與您的電子表格中的內容。

UPDATE a 
SET  TableB_Id = m.New_Id 
FROM TableA a 
     INNER JOIN 
       Mapping m 
       ON a.TableB_Id = m.Old_ID 
+0

道歉我在我的問題中犯了一個小錯誤 - 應該在**之前閱讀**表**和**之後的表A。 **表B **是另一張表 –

+0

我已添加說明。 –

+0

在附註中,如果'TableB_Id'在'Mapping'中沒有等價物,這會怎麼辦?它會從'TableA'中刪除那條記錄嗎? –

0

很明顯,我無法通過並分別與12 13 10替換,11 13,12,因爲那麼TableB_Id欄會顯示爲13, 13,13,13

爲什麼不?如果您只通過Unique_ID進行更新,則一次只能更新1行。

這是不是工作:

-- Iterate over each row in excel file 
Update TableA 
Set TableB_Id = New_ID 
Where Unique_ID = [new field to add to excel table corresponding to the unique_id] 
+0

你是否建議循環'Unique_Id'? –

+0

@dav_i是的,我剛剛添加了一個示例更新腳本... – ganders

+0

我沒有看到你的代碼示例如何停止我發生的問題...? –