如果值匹配另一个

时间:2016-10-11 12:11:35

标签: sql database oracle join

我在编写SQL查询时遇到问题,我正在尝试使用Update和Join。我已经在网上查了一下,有很多类似的例子,但我还没有能够让他们上班。

我正在尝试在表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';

我可能会因此而复杂化。感谢。

2 个答案:

答案 0 :(得分: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';

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