2011-11-16 84 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 
相关问题