【问题标题】:Mysql update with join on db2 conversionMysql 更新与 db2 转换的连接
【发布时间】: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?

【问题讨论】:

    标签: mysql sql 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+ 也有这个功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      相关资源
      最近更新 更多