从H2(和DB2)中的三个其他连接表更新一个表中的值

Jon*_*aas 3 sql db2 h2 zos

我正在努力实现H2中所描述的内容:

使用内部联接更新?

更新tlegacy lca set lca.pr_dato = ca.calc_holdings_date
...来自tca ca inner join tdd dd on ...

我得到错误:在H2中找不到列"CA.CALC_HOLDINGS_DATE".

"缺失"字段是当前存在的.我已经尝试了一些没有运气的变种.H2是否支持这种更新从一些其他连接表中收集的表中的值的方法?最终这应该在IBM DB2上运行.它支持吗?

Tho*_*ler 7

对于H2,有两种选择.第一个适用于所有数据库:

update tlegacy lca set 
  lca.pr_dato = (select ca.calc_holdings_date ... from tca ca where ...)
  where lca.id in (select ca.id from tca where ...)
Run Code Online (Sandbox Code Playgroud)

第二个选项是使用非标准MERGE语句.如果尚未存在具有此键的行,它将插入新行.

merge into tlegacy(pr_dato) key(id) 
  select ca.calc_holdings_date, ca.id from tca ca where ...
  and exists (select * from tlegacy where ...)
Run Code Online (Sandbox Code Playgroud)