已有两个表t1(xxx,aaa,bbb)和t2(aaa,bbb),均已有数据,现在我想把t2表记录aaa和bbb更新到t1中的aaa和bbb,不能破坏xxx列的值,不想使用游标cursor,敢问哪位大侠知道如何解决,越简洁越好!

解决方案 »

  1.   

    update t1 set(aaa,bbb)in (select aaa,bbb from t2 where 條件)
      

  2.   

    update t1 set (aaa,bbb)=(select aaa,bbb from t2 where 條件)
      

  3.   

    merge???
    insert /*+append*/ into table1 
    select * from table2
      

  4.   

    update t1 set(aaa, bbb)in (select aaa, bbb from t2 where 条件)
    条件没写清楚
      

  5.   

    老大,条件没写呀
    这怎么更新呀
    岂不是都更新了/?可以这样:update t1 set aaa = t2.aaa,bbb = t2.bbb from t2 where 条件可一定要慎重呀!
      

  6.   

    感谢beckhambobo(beckham和vrv0129() 和skyxj的方法。还请教beckhambobo(beckham和vrv0129() 和skyxj或其他人,表t1中XXX字段已有记录值xxx1,xxx2,xxx3,xxx1,xxx2,现在还希望两条XXX值均为xxx1的记录aaa,bbb值也相同,也就是说xxx相同的,aaa和bbb也要相同,这能办到吗,用一条语句?
      

  7.   

    t1(xxx,aaa,bbb)   t2(aaa,bbb)
    xxx1 null null       aaa1 bbb1
    xxx2 null null       aaa2 bbb2
    xxx1 null null       aaa3 bbb3
    希望结果t2不变
    t1(xxx,aaa,bbb)
    xxx1,aaa1,bbb1
    xxx2,aaa2,bbb2
    xxx1,aaa1,bbba
    问题:
    1、update t1 set aaa = t2.aaa,bbb = t2.bbb from t2:pl/sql中运行有句法错误
    ORA-00933:SQL command not properly ended
    这种写法在MS SQL SERVER2000里可以。
    2、update t1 set (aaa,bbb)=(select aaa,bbb from t2 )执行提示
    ORA-01427:single-row subquery returns more than noe row
      

  8.   


      update t1 set (aaa,bbb)=(select aaa,bbb from t2 )
      可能会有问题,因为子查询返回的可能是多条记录,就一条
      语句当然无法更新,用cursor打开,可以一条条更新.但是速度
      就会受影响。   建议: 先备份原始表,然后新建一个与原来相同的表做试验。批量
      更新,批量提交。