[英]Update based of 1st and 2nd table
我有3張桌子。
第一個表– MainTable-tableA
有項目名稱和描述
A Apple
B Banana
C Carrot
第二張表-表B子表:
A.10
A.20
A.30
B.10
B.20
B.30
項目名稱(A,B,C)是表Child的外鍵。
我必須根據更新第三個表(表C)
A …Apple
B…Banana
C…Carrot
使用內部聯接可以很好地工作。
現在,當我用10、20和30的A,B和C進行代碼10、20和30的更新時,它不起作用。
這是我寫的查詢,它對Update A,B和C正常工作
UPDATE C
SET c.[ProjectName] = a.[sysprojectname]
FROM TableC C
inner join tableA a ON c.[CostOBJProject]=a.[workpackageid]
Where c.[ProjectName] is null or c.[ProjectName]=''
所以問題是–我必須使用表A的外鍵基於表B的值更新表C。
如果我在tableC中有值A和10,那么它應該更新tableC中的描述。
請檢查此鏈接,這將為您提供幫助
https://dev.mysql.com/doc/refman/5.7/zh-CN/update.html
我認為您的語法有問題。 您可以在UPDATE查詢中執行連接的表。
UPDATE TableC, tableA
SET TableC.[ProjectName] = tableA.[sysprojectname]
Where tableA.connectcolumn = TableC.connectcolumn
AND (TableC.[ProjectName] is null or TableC.[ProjectName]='' )
使用更新語法時,必須嚴格,因此在這種情況下不允許使用LEFT JOIN。 它等效於EQUI JOIN,這是一種古老的聯接方式。
SET子句命令解釋器僅操縱該列,即使兩個列都被調用。 隨着代碼的復雜性,您添加了OR邏輯命令,最好添加括號以正確利用邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.