UPDATE A 
SET A.a=(SELECT B.a FROM B WHERE A.a=B.c);
比较容易理解的,看看行不?

解决方案 »

  1.   

    UPDATE A
    SET A.a=(select B.a from B where B.c=A.a)
      

  2.   

    UPDATE A
    SET A.a=(select B.a from B where B.c=A.a)
    where exists(select 1 from b where b.c=a.a)
      

  3.   

    bobfang(匆匆过客) 的做法才是正確的,其它幾位的代碼都是錯的,別忘了,在SQL Server中,UPDATE A
    SET A.a=B.a
    FROM A,B
    WHERE A.a=B.c中的where A.a=B.c即是關聯賦值的條件也是修改條件,而樓上幾位除了bobfang(匆匆过客) 的代碼之外,其它幾位的都把修改條件給丟了,這就出現了一個邏輯錯誤,雖然語法沒錯,但最終修改結果可能(我是說可能,在某些數據情形下,他們的修改結果也可能是一樣的)並不是你所想要的。另外還有如下一種寫法也可:
    update a set a.a=(select b.a from b where b.c=a.a) where a.a in (select b.c from b);