2016-10-11 75 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數據庫或什麼? –

相關問題