2016-10-11 32 views
0

我在编写SQL查询时遇到问题,我尝试使用更新和联接。我已经在网上查过,有很多类似的例子,但我还没有能够让他们工作。SQL查询更新一个表,如果值匹配在另一个

我试图做表A和表B之间的连接(在一个唯一的ID链接它们),然后更新表A中的值,如果表B中找到的两个值匹配我所期望的我在声明中手动输入):

UPDATE TableA 
INNER JOIN TableB ON TableA.UniqueId = TableB.UniqueId 
SET TableA.email = 'emailaddress' 
WHERE upper(TableA.user) = upper('user') AND TableB.Account = 'accountnumber' 
     AND TableB.userType = 'usertype'; 

我可能会过度复杂化。谢谢。

+4

请标记与您正在使用的数据库你的问题。大多数数据库不支持您的语法。并请解释您的查询的问题。考虑到你想要做什么,它看起来并不复杂。 –

回答

1

您可以使用合并

MERGE INTO TableA e 
USING (SELECT * FROM TableB) h 
ON (e.UniqueId = h.UniqueId) 
WHEN MATCHED THEN 
    UPDATE 
    SET e.email = 'emailaddress' 
    WHERE upper(e.user) = upper('user') 
    AND h.Account = 'accountnumber' 
    AND h.userType = 'usertype'; 
0

试试这个:

UPDATE TableA 
SET TableA.email='emailaddress' 
FROM TableA INNER JOIN TableB 
ON TableA.UniqueId = TableB.UniqueId 
WHERE upper(TableA.user) = upper('user') 
AND TableB.Account = 'accountnumber' 
AND TableB.userType = 'usertype'; 
+0

这是非标准的SQL。您应该添加为哪个DBMS工作 –

+0

道歉,这是使用Oracle数据库 –

+0

对不起,我没有得到你,你需要一个查询运行在oracle数据库或什么? –

相关问题