update t1 set t1.b=(select t2.b from t2 where t1.a=t2.a and t1.b<>t2.b);

解决方案 »

  1.   

    不行,更新的是所有的t1表中的数据,而不是t1.b<>t2.b的数据。
      

  2.   

    update t1 set t1.b=(select t2.b from t2 where t1.a=t2.a and t1.b<>t2.b)
    where exists (select 1 from t2 where t1.a=t2.a and t1.b<>t2.b);
      

  3.   

    update t1 set b=(select b from t2 where T1.b<>T2.b and T1.a=T2.a )
      

  4.   

    update t1 set t1.b=(select t2.b from t2,t1 where t1.a=t2.a and t1.b<>t2.b);要保证只返回一条记录,如果返回多条记录则无效
      

  5.   

    bzszp(SongZip) update t1 set t1.b=(select t2.b from t2 where t1.a=t2.a and t1.b<>t2.b)
    where exists (select 1 from t2 where t1.a=t2.a and t1.b<>t2.b);好像还是不行,更新t1所有 的行数。
      

  6.   

    初学 ORACLE 有很多地方不明白,请教个问题:
    TableA 表的字段: Num Number(5),Name VarChar(20)TableB 表的字段: Num Number(5),Name VarChar(20),IsOld Number(1) Default 0用 SQL 2000 的描述方法是:
    Update B 
        set B.Name = A.Name,B.IsOld = 0
       from TableA A,TableB B 
         where A.Num = B.Num and B.IsOld = 1;
    在 ORACLE 中怎实现?