我正在尝试用表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中的每个匹配行从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