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

Sql 如何使用表B中的数据更新表A?,sql,Sql,我试图用表B中的两个数据值更新表A。我想我可以做如下操作: UPDATE A SET A.DATA1= B.DATA1, A.DATA2= B.DATA2 FROM TABLE1 A, TABLE2 B WHERE A.ID = B.ID; 正确的语法是什么?经典的(不明显的)标准SQL答案是: UPDATE A SET (Data1, Data2) = ((SELECT B.Data1, B.Data2 FROM B

我试图用表B中的两个数据值更新表A。我想我可以做如下操作:

UPDATE A
SET A.DATA1= B.DATA1, A.DATA2= B.DATA2
FROM TABLE1 A, TABLE2 B
WHERE A.ID = B.ID;
正确的语法是什么?

经典的(不明显的)标准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生成一个结果行(可能)。更新上的WHERE子句防止您在B中没有匹配行的情况下将数据A置为空。双括号不是偶然的打字错误


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

对于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