两张oracle数据库表 tableA、tableB:
tableA结构如下:
    id_A  int    主键
    name varchar2(20)
    value varchar(25)
tableB结构如下:
    id_B  int    主键
    fid_A int    外键 
    name varchar2(20)
    value varchar(25)
问题:如果tableA的name中有“wang”(不只一条数据有“wang”),就把tableA的value字段更新为与之对应的(外键关联)tableB的value字段? 用一条SQL语句怎么完成?

解决方案 »

  1.   

    update tableA t set t.values=(select values from tableB a where t.id_A=a.fid_A )
    where instr(t.name,'wang')>=1
      

  2.   

    前提是你的表A的fid_A不能重复,不然鬼才知道该用哪个values去更新。满足这个前提就可以用1楼的方法了。
      

  3.   


    我这没有按 ORACLE,请问下,有试过嘛?   子查询可以写在set 后面嘛?
      

  4.   


    UPDATE tableA SET value=(SELECT B.value FROM tableA A RIGHT JOIN tableB B ON A.id_A=B.fid_A) WHERE name='wang';
      

  5.   

    oracle可以在set后面写子查询的
      

  6.   

    update t_a t set t.value=(select value from t_b b where t.t_a_id=b.B_A_ID )
    where instr(t.name,'op')>=1 and t.T_A_ID=(select b.B_A_ID from t_b b where t.t_a_id=b.B_A_ID)
      

  7.   

    这代码写得真绕啊,你那个where条件里“and t.T_A_ID=(select b.B_A_ID from t_b b where t.t_a_id=b.B_A_ID)
    ”虾米意思?完全看不懂的说