UPDATE table_name SET columnname1 = value1 [, columname2 = value2]...
FROM table_list WHERE search_condition

解决方案 »

  1.   

    update a 
    set a.fields1=(select 'a'
    from b
    where a.fields2=b.fields2 and b.fields1='a')
    where exists (select 1 from b where a.fields2=b.fields2 and b.fields1='a');
      

  2.   


     对不起,myheaven2000(),你的回答和我叙述的那种“不行”的方式有区别吗? Sql Server 里,多个表是写成 [FROM {table_name | view_name}[,...]] 这种形式的。Oracle 里这种方式不行。
      

  3.   

        bzszp(SongZip) ,看来我的描述不确切    我修改我的举例在sql server 下的语句如下update a 
    set a.fields1=b.fields1
    from a,b
    where a.fields2=b.fields2 and b.fields3='3'在Oracle里如何实现?
      

  4.   

    update a 
    set a.fields1=b.fields1
    where exists( select * from  b where  a.fields2=b.fields2 and b.fields3='3')
      

  5.   

    我以前也遇到过类似问题,SqlServer中能用,Oracle中不能用,后来改为如下语句才好了。
    update a 
    set a.fields1='a'
    where exists(select a.fields1
                 from b
                 where  a.fields2=b.fields2 and b.fields1='a')
      

  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 中怎实现?