SQL:比较表数据并更新表中的正确值

时间:2017-04-07 14:20:11

标签: sql db2

我在几个表中存在以下数据差异,需要使用sql中的更新查询进行更正

主表(取表A)表包含同一产品的2个主键值,如下所示

------------------
PRRFNBR|PRNBR
-------|--------
XXXX   |123
YYYY   |123
----------------

这些参考键在下表2中使用,

表B:

----------------------
SUPRFNBR |SUSPRNBR
---------------------
XXXX     |   234
-------------------

表C:

-------------------
SEPRFNBR |  SESUPRNBR
-------------------
YYYY     | 435
--------------------

现在我需要比较所有这3个表并使用表B(SUPRFNBR)中提供的参考密钥更新表C中的SEPRFNBR(如果相同的PRNBR具有2,则需要在表C中更新参考密钥XXXX)表A)中的主键值

1 个答案:

答案 0 :(得分:0)

您的逻辑 - 据我所知 - 不需要将表A作为不同的SUPRFNBR& SEPRFNBR有资格获得更新

update c set SEPRFNBR = (select SUPRFNBR from b where b.SUPRNBR = c.SEPRNBR)

如果出于某些(未描述的)原因,需要对表A进行查找,则可以对其进行扩展,例如

update c set SEPRFNBR = (select SUPRFNBR from b 
                          where b.SUPRNBR = c.SEPRNBR) 
                            and (select count(*) from a 
                                  where b.SUPRNBR = a.PRNBR) > 1)"

您可以根据您可能拥有的其他方面限制来改变解决方案。这只是一个解决方案的想法。