我有两个表,一个是设备表devno,有三个域分别是devno char primary; lacksum decimal; 
lackrate decimal ; 另一个是交易记录表mx, 其中有日期域date date, 也有域devno char;lacksum decimal......我想让devno表中的所有devno的lacksum 替换为mx表中相应devno的某一段日期的lacksum之和
如何实现?
不知说清了没有?? 主要涉及遍历记录和两个表的操作

解决方案 »

  1.   

    update a
    set a.lacksum=b.lacksum
    from devno a
    join (select devno,sum(lacksum) as lacksum from mx group by devno) b
    on a.devno=b.devno
      

  2.   

    update a
    set a.lacksum=b.lacksum
    from devno a
    join (select devno,sum(lacksum) as lacksum from mx where date between @d1 and @d2 group by devno) b
    on a.devno=b.devno
      

  3.   

    update a
    set a.lacksum=b.lacksum
    from devno a
    join (select devno,sum(lacksum) as lacksum from mx group by devno) b
    on a.devno=b.devno
      

  4.   


    这个大哥已经写的很清楚了,a就是你要更新的表 devno 
                           b就是将你MX表要统计的某一段时间的内 lacksum 值的总和的记录当成一张新表
      然后通过a.devno=b.devno关联起来
      

  5.   

    出错了:
    ERROR 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from devno a
    join (select devno,sum(lacksum) as lacksum from mx group by devno)' at line 3