将密钥迁移到新表

时间:2013-08-01 15:58:25

标签: sql

我有一个表,其中包含与不同表相关的键,我需要将其更改为指向不同的表。

表A 是正在编辑的表我正在将Id移动到表B旧指向表B新

我无法编辑现有表格的架构。

之前的表A (无法编辑架构)

Unique_Id  TableB_Id
1          10
2          11
3          11
4          12

表A <

之后
Unique_Id  TableB_Id
1          12
2          13
3          13
4          13

我所拥有的(虽然目前在电子表格中)此映射

Old_Id     New_Id
10         12
11         13
12         13

显然,我无法通过1012 111312单独替换13,因为这样TableB_Id列会显示13, 13, 13, 13

希望这是有道理的。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用电子表格的内容创建一个名为Mapping的表格。

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

答案 1 :(得分:0)

  

显然我无法通过12,11单独替换10   13,112与13,因为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]