我现在要更新update操作,涉及到A,B
两个表
大概意思是这样的,
只更新一个表A,但是是要从关联的A,B的结果集当中来获取相关条件,以及相关值。
加入A表有1,2,3,4四个字段
B表有1,2,3,4四个字段下面这个语句有问题。但是大概是这个意思
这是通过关联查处的结果集
     select  a.1,a.2,b.3,b.4 from A a,B b where a.1=b.1,a.3=b.2
然后还有一步就是通过上面查出来的结果集。更新A表 假设 查出来的结果集为C
       update A  a set a.1=C.a.1 ,a.2=C.a.2 where a.3=C.b.3 and a.4=C.b.4请问用一个语句怎么来实现。

解决方案 »

  1.   

    update A 
    set    (a.1, a.2) = (select b.1, b.2 from b where A.*** = B.***)
    where   .....语法格式如上,自行调整把
      

  2.   

    提示 singel-row subquery returns more than one row
      

  3.   


    UPDATE A
    SET (A.3, A.4) = (SELECT B.3, B.4 
                        FROM  B 
                        WHERE A.1=B.1 AND A.2=B.2)
    WHERE EXISTS (SELECT 1 
                  FROM B
                  WHERE A.1=B.1 AND A.2=B.2)
      

  4.   

    试一下这个SQL语句,其中表结构 A(col1,col2,col3,col4)    B(col1,col2,col3,col4)
    update A
    set col1=btable.col1,col2=btable.col2
    from B btable
    where col3=btable.col3 and col4=btable.col4;
      

  5.   

    你要说明白,把B表的哪个字段更新到A表中的哪个字段,以及更新条件是什么?
    通用的做法:
    update   A   
    set  (A表中你要更新的字段)   =   (select B表中你要更新的字段 from   b   where 需要的条件) 
    where  需要更新A表的条件
      

  6.   

    to bai_jiong 
    提示相应错误 command not properly ended
    to haiye  and sulins  
    错误信息 提示   singel-row   subquery   returns   more   than   one   row
    因为中间查出来的是一个记录集。
      

  7.   

    不用那么麻烦,好像可以用nvl()函数做,可以一步到位,另外MERGE语句也可以试一下。
      

  8.   

    update   A   
    set         (a.1,   a.2)   =   (select   b.1,   b.2   from   b   where   A.***   =   B.***) 
    where       ..... 确定(select   b.1,   b.2   from   b   where   A.***   =   B.***) 里面的条件控制为能返回唯一的一条记录
      

  9.   

    singel-row   subquery   returns   more   than   one   row这个问题可能是你的数据库驱动支持返回多条!!你看看网上有很多!
      

  10.   

    更新时,返回记录数大于1条,如果返回的结构都一样,可以通过rownum=1来实现只返回1条记录,
    如果返回多条不同的记录,那就是你这个需求有问题了,需要重新整理需求或者重新设计表结构了。