有两个表TEST1  A, B,C,D     TEST2  AA ,BB ,CC ,DD
               1  2 3 4            1   2   55  55
               1  4 5 4            1   4   77  55
               2  5 5 6            2   6    4  5条件是如果TEST1.A =TEST2.AA AND TEST1.B = TEST2.BB THEN  
 使TEST2的CC,DD的值为TEST1的C,Dupdate test2 set TEST2.CC = TEST1.C ,TEST2.DD = TEST1.D  FROM TEST1,TEST2 WHERE TEST2.AA = TEST1.A AND TEST2.BB = TEST1.B;总是出错,不知道为什么,这个语句在SQL里是可行,由于我刚学ORACLE有的地方不太懂,请高手给指点指点.谢谢了.

解决方案 »

  1.   

    如果TEST2.AA = TEST1.A AND TEST2.BB = TEST1.B会查出两条数据!!无法定位更新的位置!
      

  2.   

    楼上说的对,TEST2.AA = TEST1.A AND TEST2.BB = TEST1.B之间没有关联。
      

  3.   

    两个and条件,可以分开进行update
      

  4.   

    update test2 set TEST2.DD = TEST1.D  FROM TEST1,TEST2 WHERE TEST2.AA = TEST1.A AND TEST2.BB = TEST1.B;update test2 set TEST2.CC = TEST1.C FROM TEST1,TEST2 WHERE TEST2.AA = TEST1.A AND TEST2.BB = TEST1.B;
    这样吗?
      

  5.   

    不对,update怎么能跟from子句呢,真的需要的话,需要使用子查询的,或者干脆写个procedure
      

  6.   

    如果没有重复数据的话,可以这样写
    update test2 set (TEST2.CC,TEST2.DD) = (select TEST1.c,TEST1.D  FROM TEST1 WHERE A = TEST2.AA  AND B = TEST2.BB);