我有2个表,其中一个列/字段在两个表中都相同,我需要使用表B中的数据更新表A. 这里需要采用表A.x值并与B.w和等效物进行比较B.z值需要在A.x中更新。 x值不同于x1,x2等。因此需要采用每个值并与表B中的w进行比较,并且需要在表A中的x,x1,x2等中更新等效的z值。
ENV processors 4
ENTRYPOINT ["/tini", "--", "mpirun", "-np", "$processors"] # doesn't work
如果我这样编写,我需要编写40更新语句,有没有简单的方法来进行这些更新。
子查询可能会返回多行,我也需要对其进行优化。
谢谢, 阿什拉夫
答案 0 :(得分:0)
由于a.x具有另一个值a.x1和a.x2等,当然每个值需要一个子查询,因为它是您想要查找的不同b记录。
UPDATE TableA a
SET a.x = (SELECT b.w FROM TableB b WHERE a.x = b.z)
, a.x1 = (SELECT b.w FROM TableB b WHERE a.x1 = b.z)
, a.x2 = (SELECT b.w FROM TableB b WHERE a.x2 = b.z)
...
WHERE a.j = 'somevalue';
您可能需要考虑更改tableA的表设计,以便让行包含值而不是列。这将使更新(以及一般的查询)变得更加容易。