我是新手啊啊啊问的问题如果太白痴。。大家不要喷我
本来我是查出来做for循环来更新的,但是好像多的话比较慢我问一下语法我不太懂要根据一个表的序号来更新另一个表,比如:
A表有AID,ANAME,BID
B表有BID,BNAME要更新A表的ANAME为B表的BNAME,怎么写啊?

解决方案 »

  1.   

    update a 
    set a.BID=(select b.bid where a.bid=b.bid)
    where a.aid in(select b.bid from b)后面的where 子条件必须加,因为a.BID=(select b.bid where a.bid=b.bid)
     因为如果a.bid 不在b.bid,(select b.bid where a.bid=b.bid )就是null,这样不在B 表中的记录。会被赋值为NULL。
      

  2.   

    update a  
    set a.BID=(select b.bid where a.bid=b.bid)
    where a.aid in(select b.bid from b a.bid=b.bid)
      

  3.   

    UPDATE A SET ANAME=( SELECT BNAME FROM B  WHERE BID IN (SELECT BID FROM A))A B 表連接是以bid 為條件吧~
      

  4.   


    有点晕这个它自己能找到aid等于bid时候的bname嘛?
      

  5.   


    这个,看懂了,如果,是多个字段呢?update a set (a.bname,字段A,字段B)=(select b.bname,字段A,字段B where a.bid=b.bid) 
    where a.bid in(select b.bid from b a.bid=b.bid)这样子对嘛???
      

  6.   

    多个字段 
    update a set (a.bname,字段A,字段B)=(select b.bname,字段A,字段B where a.bid=b.bid) 
    where a.bid in(select b.bid from b a.bid=b.bid)
    对的  切忌后面where不能丢
      

  7.   


    --A表有AID,ANAME,BID
    --B表有BID,BNAME
    --要更新A表的ANAME为B表的BNAME,怎么写啊?merge into A
         using B
            on(A.BID=B.BID)
     when matched then
       update set A.NAME = B.NAME;