我在几个表中存在以下数据差异,需要使用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)中的主键值
答案 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)"
您可以根据您可能拥有的其他方面限制来改变解决方案。这只是一个解决方案的想法。