两个表:
AA{AASID,AAINT};
BB{BBLSID,BBINT};
还有个一个对照表:
CORP{AALSID,BBLSID};  这个是对照表 用于对照AA里的aasid 和BB里的bblsid我想update AA 里的AAINT 
         当AA.AASID = CORP.AALSID(也就是BB.BBLSID)时 
          将BB.INT 写入相对应的AA.INT中怎么实现?

解决方案 »

  1.   

    UPDATE AA SET AAINT=(SELECT MAX(BBINT) FROM BB WHERE BB.BBLSID=AA.AASID)
     WHERE EXISTS(SELECT 1 FROM BB WHERE BB.BBLSID=AA.AASID);
    COMMIT;
      

  2.   

    -- 因为多对多关系,所以才用了MAX, TRY IT ..
    UPDATE AA
       SET AA.AAINT = (SELECT MAX(BB.BBINT)
                         FROM BB, CORP
                        WHERE CORP.BBLSID = BB.BBLSID
                          AND CORP.AASID = AA.AASID)
     WHERE EXISTS (SELECT 1
              FROM BB, CORP
             WHERE CORP.BBLSID = BB.BBLSID
               AND CORP.AASID = AA.AASID);
      

  3.   

    UPDATE AA 
    SET AAINT=(SELECT BBINT FROM BB WHERE BB.BBLSID=AA.AASID) 
    WHERE EXISTS(SELECT 1 FROM CORP CC WHERE CC.AASID=AA.AASID AND BB.BBLSID=CC.BBLSID); 
    COMMIT;
      

  4.   


    UPDATE AA
    SET AAINT =(SELECT BB.INT 
     FROM BB INNER JOIN  CORP ON BB.BBLSID=CORP.BBLSID WHERE BB.BBLSID=AA.AALSID)
      

  5.   


    那么不等时AA.INT中的值是保留原值, 还是写为NULL?
      

  6.   

    楼主,不妨用MERGE INTO 试试,这样就不用第三张表了,简单方便。
      

  7.   


    MEGER INTO 太消耗资源了吧!