如何使用表B中的数据更新表A?

时间:2011-11-16 07:05:38

标签: sql

我正在尝试用表B中的两个数据值更新表A.我想我可以做类似的事情:

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

正确的语法是什么?

2 个答案:

答案 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中的每个匹配行从B生成一个结果行(可能).UPDATE上的WHERE子句阻止您在B中没有匹配行的情况下使数据A无效。双括号不是偶然的错字。

编写这个很麻烦,因此大多数DBMS提供了一种非标准机制来使用连接进行更新,但所使用的语法因DBMS而异。

答案 1 :(得分: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