现有表A,结构和数据如下: 
userID    userDep    userNum1              userNum2
1            A              0                       0       
1            B              0                       0  
1            C              0                       0  
2            A              0                       0  现通过一个SQL语句查询出如下结果的表 
userDep    userNum1     userNum2
A            12               6
B            10               7现期望实现如下操作: 
将上述结果中的userNum1、userNum2,根据userDep=A表.userDep的原则,更新A表中userID=1的值。 
即A表结果为: 
userID    userDep        userNum1               userNum2
1            A              12                         6          
1            B              10                         7
1            C              0                          0 
2            A              0                          0
----------------------------------------------- 
谢谢。

解决方案 »

  1.   

    update A
    set userNum1=B.userNum1,userNum2=B.userNum2
    from A
    inner join (一个SQL语句查询结果)B on A.userDep=B.userDep
    where A.userID=1
      

  2.   

    update A 
    set userNum1=B.userNum1,userNum2=B.userNum2 
    from 表A A 
    inner join (select userDep,userNum1,userNum2 from 表A where ....)B on A.userDep=B.userDep 
    where A.userID=1
      

  3.   

    update A ,(select userdep,count(usernum1) num1,count(usernum2) num2 from A group by userdep) B
    set A.usernum1=B.num1,A.usernum2=B.num2 where A.usedep=b.userdep
     
      

  4.   


    update a set (usernum1,usernum2)=
    (select b.usernum1,b.usernum2 from b 
    where b.userdep=a.userdep) 
    where exists(select 1 from b where b.userdep=a.userdep) and a.userid=1--result:
    1 A 12 6
    1 B 10 7
    1 C 0 0
    2 A 0 0
      

  5.   

    看不懂,跟sql server2000的好像很不一样
      

  6.   

    where 条件你要自己写啊,还有是否有group by语句update A 
    set userNum1=B.userNum1,userNum2=B.userNum2 
    from 表A A 
    inner join (select userDep,userNum1=sum(userNum1),userNum2=sum(userNum2) 
    from 表A group by userDep)B on A.userDep=B.userDep 
    where A.userID=1
      

  7.   

    看来,大家在理解上存在一些误会,现重新描述下:
    现有表A,结构和数据如下: 
    userID    userDep    userNum1              userNum2 
    1            A              0                      0      
    1            B              0                      0  
    1            C              0                      0  
    2            A              0                      0  现通过一个SQL语句查询出如下结果的表(所查询出的数据来源于其他表,并非表A里的数据
    userDep    userNum1    userNum2 
    A            12              6 
    B            10              7 
      

  8.   

    update A as t
       set t.usernum1 = (select t2.usernum1
                           from (select * from test2“查询结果”) t2
                          where t.userdep = t2.userdep),
           t.usernum2 = (select t2.usernum2
                           from (select * from test2“查询结果”)  t2
                          where t.userdep = t2.userdep)
     where t.userid = 1我测过 有个缺陷就是把C的0,0 变成空了“ ”,“ ” 
      

  9.   

    楼上的兄弟,你那是ms-SQL的用法,别说其他的,update A as t就存在语法问题。
      

  10.   


    结果
    1    A    12    6
    1    B    10    7
    1    C       
    2    A    0    0
    你看看怎么改一下就好了
      

  11.   

    果然  是有问题的 我加as 是发的时候加的, 我是在oracle 上测的  呵呵
    看来不能想当然随便加 as啊
      

  12.   

    update A
       set (userNum1, userNum2) =
           (select userNum1, userNum2
              from B
             where B.userDep = A.userDep
           )
     where userId=1
       and
     exists
     (
      select 1
        from B
       where B.userDep = A.userDep
     )如果是10g以上的版本,还可以
     merge into A
     using (select * from b) B  on (A.userDep = B.userDep)
     when matched then
      update set A.userNum1 = B.userNum1
        ,A.userNum2 = B.userNum2
       where userId = 1;
      

  13.   

    update A
    set userNum1=AA. userNum1 ,
    userNum2 = AA. userNum2
    from 表A, AA
    where AA .userDep=A表.userDep
     and A表. userNum1 <>0
    AA 是你检索的那个表。 可不可以, 
      

  14.   


    update A a
       set (a.userNum1, a.userNum2) = (select b.userNum1, b.userNum2
                                         from (一个sql语句查询的结果)B b
                                        where a.userDep = b.userDep)
     where exists (select 1
              from (一个sql语句查询的结果)B b
             where a.userDep = b.userDep)
       and a.userID = 1;
      

  15.   


    create table TA(userID int,userDep varchar2(4),userNum1 int,userNum2 int)
    insert into TA values(1,'A',0,0)
    insert into TA values(1,'B',0,0)
    insert into TA values(1,'C',0,0)
    insert into TA values(2,'A',0,0)
    create table TB(userDep varchar2(4),userNum1 int,userNum2 int)
    insert into TB values('A',12,6)
    insert into TB values('B',10,7)
    select * from TA
    select * from TB
    UPDATE TA set (TA.userNum1,TA.userNum2) = 
             (select TB.userNum1,TB.userNum2 from TB where TB.userDep =TA.userDep)
    where TA.USERID =1
    select * from TA