update ta set a = a+b from Tb where ta.id = tb.id

解决方案 »

  1.   

    不能将一个表赋给一个变量
    可以用临时表
    如:select * into #ta from ta
      

  2.   

    update x set x.a=x.a+y.b
    from Ta as x
     inner join Tb as y
     where x.id=y.id
      

  3.   

    第一个问题,我也刚解决了,不过还是要谢谢各位.
    (我这个问题想来太简单了,真是贻笑大方!)
    update Ta
    set a=a+b
    from Ta,Tb
    where Ta.id=Tb.id不知第二问题怎样?
      

  4.   

    To:sankis() 
    #ta 和 ta是不同表吗?加#是不是表示临时表?
      

  5.   

    是的是表示临时表啊。
    Select count(*) as id into #ta from ta
    那么你Select * From #ta 就是有多少条记录。
      

  6.   

    谢谢sankis!
    小弟还有个小问题:
    select a from Ta into #Ta1
    然后用一变量从#Ta1中取得值,每次取一行,如何取呢?拜托了!
      

  7.   

    用游标
    declare mycursor cursor for
    select ..
      

  8.   

    谢谢 qiliu(痴心求学)的"游标".
    我用一while循环来取得每一行,但碰到一个问题:
    declare @index int
    select top @index a
    from Ta报错是:'@index' 附近有语法错误。难道top之后只能跟常量吗?各路高手要帮一下忙啊!!!
      

  9.   

    top 后面只能跟常量,不能跟变量或表达式
      

  10.   

    SET NOCOUNT ON
    DECLARE user_cursor CURSOR FOR
      SELECT userid FROM UserTable OPEN user_cursorDECLARE @UserCode varchar(20),FETCH NEXT FROM user_cursor
    INTO @UserCodeWHILE @@FETCH_STATUS=0
    BEGIN  .........这里是你的过程
      COMMIT TRANSACTIONnextuser:
      FETCH NEXT FROM user_cursor
      INTO @UserCode
    ENDCLOSE user_cursor
    DEALLOCATE user_cursorSET NOCOUNT OFF