簡體   English   中英

根據第一和第二表進行更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM