2011-11-16 82 views
0

我試圖從表B.兩個數據值來更新表A中,我想我可以這樣做:如何使用表B中的數據更新表A?

UPDATE A 
SET A.DATA1= B.DATA1, A.DATA2= B.DATA2 
FROM TABLE1 A, TABLE2 B 
WHERE A.ID = B.ID; 

什麼是正確的語法?

+0

您正在使用哪個數據庫管理系統? –

回答

0

經典(非顯而易見)標準的SQL答案是:

UPDATE A 
    SET (Data1, Data2) = ((SELECT B.Data1, B.Data2 
          FROM B 
          WHERE B.ID = A.ID)) 
WHERE A.ID IN (SELECT B.ID FROM B); 

相關聯的子查詢對每個匹配的行中的A. UPDATE上的生成一個結果行(大概)從乙WHERE子句可防止您在B中沒有匹配行的情況下使數據A無效。雙括號不是偶然的拼寫錯誤。

這是很難寫的,所以大多數DBMS提供了一個非標準的機制來更新連接,但是所用的語法因DBMS而異。

0

對於SQL Server,我會做:

UPDATE A SET 
    A.DATA1= B.DATA1, 
    A.DATA2= B.DATA2 
FROM TABLE1 A 
JOIN TABLE2 B on WHERE A.ID = B.ID 
相關問題