当然更新12条了,你没有在update的语句添加条件,你的where 只是select 的条件,回去加上你想要更新的行的限定条件试一下

解决方案 »

  1.   

    少了update的where条件。
    update table
    set
    col=(select ...)
    ...
    where ...
      

  2.   

    TEMPRPT_MONTH_SUM03里面有6条记录,
    但OFAGENT,AREA,SUMMONTH,CHARGETYPE
    不唯一
      

  3.   

    是唯一的,我经过分组后得到的,
    现在看来是因为update没有限制条件,怎样实现呢?抛开上面的算法不管,先看下面要求,重新思考
    我要更新一个表(多个需要更新字段),数据来源于另一个数据表,这两个表通过几个字段相连,两个表连接得到一组数据,然后用这组数据去更新
      

  4.   

    update table1 a
    set col1=(select b.col1 from table2 b where a.id=b.id)
    where a.id=b.id
      

  5.   

    update table1 a
    set col1=(select b.col1 from table2 b where a.id=b.id)
    where a.id=b.id由于b在子查询内部,所以不能识别,这行不通的
      

  6.   

    加一个exists条件就行了。UPDATE RPT_MONTH_SUM 
      SET (RPT_MONTH_SUM.USE_M,
           RPT_MONTH_SUM.USE_1_M,
           RPT_MONTH_SUM.USE_2_M,
           RPT_MONTH_SUM.USE_3_M,
           RPT_MONTH_SUM.USE_4_M,
           RPT_MONTH_SUM.USE_5_M,
           RPT_MONTH_SUM.USE_6_M)=
      (SELECT 
         TEMPRPT_MONTH_SUM03.USE_M,
         TEMPRPT_MONTH_SUM03.USE_1_M,
         TEMPRPT_MONTH_SUM03.USE_2_M,
         TEMPRPT_MONTH_SUM03.USE_3_M,
         TEMPRPT_MONTH_SUM03.USE_4_M,
         TEMPRPT_MONTH_SUM03.USE_5_M,
         TEMPRPT_MONTH_SUM03.USE_6_M
       FROM TEMPRPT_MONTH_SUM03 
       WHERE
         RPT_MONTH_SUM.OFAGENT=TEMPRPT_MONTH_SUM03.OFAGENT
         AND RPT_MONTH_SUM.AREA=TEMPRPT_MONTH_SUM03.AREA
         AND RPT_MONTH_SUM.SUMMONTH=TEMPRPT_MONTH_SUM03.SUMMONTH
         AND RPT_MONTH_SUM.CHARGETYPE=TEMPRPT_MONTH_SUM03.CHARGETYPE)
     where exists ( select 1 from TEMPRPT_MONTH_SUM03
          where
          RPT_MONTH_SUM.OFAGENT=TEMPRPT_MONTH_SUM03.OFAGENT
          AND RPT_MONTH_SUM.AREA=TEMPRPT_MONTH_SUM03.AREA
          AND RPT_MONTH_SUM.SUMMONTH=TEMPRPT_MONTH_SUM03.SUMMONTH
          AND RPT_MONTH_SUM.CHARGETYPE=TEMPRPT_MONTH_SUM03.CHARGETYPE ) ;