我有二个结构相同的表A,B, 它们有字段ID,data1,data2 ,现在我想把A表的data1复制到B表的data1中,根据它们的ID如果相同的话,
我这样写不行哦update B set B.data1=A.data1 from A,B where A.ID=B.ID  
为什么这样不行呢,请高手指点下,在线等待,谢谢了!

解决方案 »

  1.   

    update b 
    set b.data1 = (select data1 from a where a.id = b.id)
      

  2.   

    sql的语法跟oracle的语法还是有区别的。
      

  3.   

    begin
      for data1 in ( select A.data1  from A where A.ID=B.ID)
      loop
      insert into B(data1) values data1 ;
      end loop;
      commit;
    end;
    我根据tom书上改造的,不知道能成吗?你试下!
      

  4.   


    update(select B.data1 datab,A.data1 dataa from A,B where A.ID=B.ID)
    set datab=dataa
      

  5.   

    引用楼主 mynameliuli 的回复:
    我有二个结构相同的表A,B, 它们有字段ID,data1,data2 ,现在我想把A表的data1复制到B表的data1中,根据它们的ID如果相同的话,
    我这样写不行哦update B set B.data1=A.data1 from A,B where A.ID=B.ID 
    为什么这样不行呢,请高手指点下,在线等待,谢谢了!update(select B.data1 datab,A.data1 dataa from A,B where A.ID=B.ID)
    set datab=dataa
    不用  update B吗?
      

  6.   

    --id要一一匹配
    --9i以上的 merge into
    merge into B using A on (A.ID=B.ID)
    when matched then
    update set B.data1=A.data1
    --or 通用的
    update b  
    set b.data1 = (select data1 from a where a.id = b.id)
    where exists(select 1 from A where a.id = b.id)
      

  7.   

    --id要一一匹配
    --9i以上的 merge into
    merge into B using A on (A.ID=B.ID)
    when matched then
    update set B.data1=A.data1
    --or 通用的
    update b   
    set b.data1 = (select data1 from a where a.id = b.id)
    where exists(select 1 from A where a.id = b.id)我用上面所有的方法都不行哦~~忘了跟大家说,ID是NCHAR类型的,那B.data1=A.data1
    如何写才行呢?
      

  8.   

    --id要一一匹配
    --9i以上的 merge into
    merge into B using A on (A.ID=B.ID)
    when matched then
    update set B.data1=A.data1
    --or 通用的
    update b   
    set b.data1 = (select data1 from a where a.id = b.id)
    where exists(select 1 from A where a.id = b.id)我用上面所有的方法都不行哦~~忘了跟大家说,ID是NCHAR类型的,那B.ID=A.ID 这样写可以吗?
      

  9.   

    对oracle数据库的所有操作有没有保存在系统哪张表上?