表A将数据存储在
行中id, value1, value2
其中id始终为偶数。表B以
的形式存储此数据id, value1
id-1, value2
或者
id, value1+value2
我需要使用表A中的值对表B进行一次性更新。 有没有优雅的方法呢?
澄清:
要回答下面Nate CK的问题(这是问题的核心),了解哪种安排适用于表A中的记录的唯一方法是检查表B中的值(id)。这就是问题混乱的原因。
答案 0 :(得分:2)
假设您想要的逻辑是以下
然后这应该工作
update b
set b.value = a.value1
from tableb b join tablea a on a.id = b.id
where 0 = a.id % 2
and a.id - 1 in (select id from tableb)
update b
set b.value = a.value2
from tableb b join tablea a on a.id = b.id - 1
where 0 = a.id % 2
and a.id - 1 in (select id from tableb)
update b
set b.value = a.value1 + a.value2
from tableb b join table a on a.id = b.id
and a.id - 1 not in (select id from tableb)
答案 1 :(得分:1)
将B设置为(id,value1),(id + 1,value2) - 仅当B中存在id + 1时才设置后者
update b
set b.value = a.value1
from tableb b join table a on a.id = b.id
where 0 = a.id % 2
update b
set b.value = a.value2
from tableb b join table a on a.id = b.id - 1
where 0 = a.id % 2
现在,对于id + 1不在B中的id,将value2添加到id。
update b
set b.value += (select a.value2 from a where a.id = b.id)
where b.id - 1 not in (select id from b)
答案 2 :(得分:0)
Update b SET b.value1 = a.value1 FROM
TableB b INNER JOIN TableA a ON a.id = b.id