Update 表1 Select * From 表2 Where PId='+PId在mssql中,insert语句可以这么写,可是update这么,有错误.
我要实现的是用查询到的结果更新一个表,它们两个字段一样.怎么写呢

解决方案 »

  1.   

    --這樣?
    Update a  set  PId=b.pid  From 表1 a, 表2 b Where a.PId=b.PId 
      

  2.   

    楼主描述的不是很明白。估计是这个样子,代码如下:
    Update a  
      set PId = b.pid
    From 
      表1 a, 表2 b
    Where
      a.PId=b.PId 
    如果不正确,那么请楼主再把问题表述一下。谢谢。
      

  3.   

    我可能是太招急了.
    是这样的.我有两个表. a和ba表和b表数据结构是一样的,a表是主表,b表是他的一个副本.
    当a表有数据变动时呢,b表也要变.
    所以我想可以不可以 为update语句指定一个select语句,进行更新.
    可是字段很多,写起来很是麻烦.我不想写字段名,太多了.这个要怎么写呢.
    我是这么写的 update [a] select * from [b] where pid=pidpid是个己知的条件,我知道要更新那一条记录,这是一个动作,不是一个例行的过程.  
      

  4.   

    动态语句也不算,不过也是.
    就是a 变,b也要变.
    不过呢.把所有字段太多,我想update可以不可以不写字段名,全更新过去
      

  5.   

    create trigger tr on a
    for insert,update,delete
    as
    begin
        delete b where Pid in (select pid from deleted)
        insert b select * from inserted
    end
    go
      

  6.   

    我也是这么想的,不过这之前,还是想问问各位,update能不能这样干\了,.
      

  7.   

    写UPdate语句,就必须提供列名,不能你Insert那样用*
      

  8.   


    Update 表1 Select * From 表2 join 表1 on  表2.pid=表1.pid 
      

  9.   

    用出發器吧create trigger trg_a on a
    for insert,update,delete
    as
    begin
        delete a from a a,deleted b where a.xx=b.xx    insert into b select * from inserted
    end這樣就讓兩個表保持同步.
      

  10.   

    create trigger trg_name on b from delete,insert,delete
    as 
    begin delete a from a a,deleted b where a.xx=b.xx insert into b select * from insertedend