Mysql 更新与 db2 转换的连接

Posted

技术标签:

【中文标题】Mysql 更新与 db2 转换的连接【英文标题】:Mysql update with join on db2 conversion 【发布时间】:2018-10-06 21:28:44 【问题描述】:

我有这个查询结构更适合 mysql

 update metrics m join
   (select repnumber, material, item, color, sum(m2.velocity)/count(*) as avg_velocity
    from metrics m2
    group by repnumber, material, item, color
   ) m2
   using (repnumber, material, item, color)
set m.repvolocity = m2.avg_velocity;

有没有办法改变它以适用于 db2?

【问题讨论】:

【参考方案1】:

在 DB2(和大多数其他数据库)中,您将使用相关子查询:

update metrics m
    set repvolocity = (select avg(m2.velocity)
                       from materials m2
                       where m2.repnumber = m.repnumber and m2.material = m.material and m2.item = m.item and m2.color = m.color
                      );

我应该注意到,DB2 还可以轻松计算动态值:

select m.*,
       avg(m.velocity) over (partition by repnumber, material, item, color) as repvelocity
from materials;

使用窗口函数,您可能会发现不需要实际存储值。我应该补充一点,MySQL 8+ 也有这个功能。

【讨论】:

以上是关于Mysql 更新与 db2 转换的连接的主要内容,如果未能解决你的问题,请参考以下文章

Mysql关联更新 DB2写法

如何使用连接更新DB2表?

DB2 - 摄取与更新

[db2数据库数据同步解决方案]DB2数据库数据同步更新方法及设备与流程

如何在 db2 中使用 join 进行更新

DB2 SQL更新与子查询相关的多于1列[duplicate]