我想用主键的新值更新表的主键

时间:2016-05-13 06:24:37

标签: sql

我想用新的主键值更新旧表的主键。

旧表

catalogId|columnB  

000987|abc  
000765|xyz

新表

catalogId|columnB  

100001|qwe  
100002|uop  

注意: 我想要实现的是我想用新值更新旧表,即000987必须由100001和000765替换为100002,依此类推。有很多记录。

如何编写通用查询来进行更新?

1 个答案:

答案 0 :(得分:0)

首先,您需要将数据库中的映射表导入为表,或将其用作外部表。

假设此导入的映射表结构为

mapping_table
old_catalogID | new_catalogID | old_columnB | new_columnB

然后您的更新查询将类似于:

update ot.old_table ot
  set ot.catalogId = (select mt.new_catalogID from mapping_table mt
                      where mt.old_catalogID = ot.catalogId),
      ot.columnB   = (select mt.new_columnB from mapping_table mt
                      where mt.old_columnB = ot.columnB);