问题应该是:
                  怎么把筛选出来的数据MON.RATIO更新到另一个表TRD_HIST的RATIO字段中,他们三个表有个共同的字段ID

解决方案 »

  1.   

    不能使用merge  into实现
      

  2.   


    update TRD_HIST set RATIO=(select MAX(MON.RATIO)
        FROM BAS_F MON,BAS_O SEL
        WHERE MON.STATUS = 'N'
        AND SEL.STATUS = 'N'
        AND SEL.ID = MON.ID
        and MON.ID=TRD_HIST.ID)
    WHERE EXISTS(select 1
        FROM BAS_F MON,BAS_O SEL
        WHERE MON.STATUS = 'N'
        AND SEL.STATUS = 'N'
        AND SEL.ID = MON.ID
        and MON.ID=TRD_HIST.ID)
      

  3.   


    加min的作用是为了防止子查询返回多条记录
    UPDATE TRD_HIST T
       SET T.RATIO =
           (SELECT MIN(MON.RATIO)
              FROM BAS_F MON, BAS_O SEL
             WHERE MON.STATUS = 'N'
               AND SEL.STATUS = 'N'
               AND SEL.ID = MON.ID
               AND T.ID = MON.ID);
      

  4.   


    加min的作用是为了防止子查询返回多条记录
    UPDATE TRD_HIST T
       SET T.RATIO =
           (SELECT MIN(MON.RATIO)
              FROM BAS_F MON, BAS_O SEL
             WHERE MON.STATUS = 'N'
               AND SEL.STATUS = 'N'
               AND SEL.ID = MON.ID
               AND T.ID = MON.ID);谢谢,min和max的作用一样吧?
      

  5.   

    和merge into效果一样的,只要是存在匹配的就更新了
    如果你的数据是一一对应的话,max和min没啥差别,这么写主要是怕存在1对多的情况会报错