2011-06-02 101 views
1
Update AAA.master A, BBB.images B, BBB.content C 
set A.caption = B.image_txt where C.content_id_key = A.media_id 

雖然我確定它們都是主鍵,但出現以下錯誤。他們是否必須有PK-> FK關係?我不這麼認爲。 您正在使用安全更新模式,你試過沒有一個WHERE使用鍵列更新表密鑰上的Mysql更新錯誤

感謝

回答

1

的解決方案是在該錯誤。

但首先,你需要重寫查詢。之後我
重複:

我不能使用隱where加入,因爲他們是混亂!

重寫更新查詢到這一點:

Update AAA.master a 
INNER JOIN BBB.images b ON (a.someid = b.someid) #<<-- your error is here 
INNER JOIN BBB.content c ON (C.content_id_key = A.media_id) 
SET A.caption = B.image_txt WHERE ........ #<<-- and also here 

您所做的第一個錯誤是,沒有連接表A和B之間的標準 第二個錯誤是,在嚴格模式你需要有一個where條款。
沒有我做沒有你沒有有一個where子句,你只是有僞裝聯接標準的where子句。

而且你還是個加入準則短,真正的where子句短。

這就是爲什麼隱含加入吸如此糟糕

0

這可能是因爲你沒有從該表B中選擇記錄WHERE部分

+0

不,我想that.I即使只有2臺試了一下。我閱讀關於關閉安全更新,但我不想。它幾乎像它沒有看到我的where子句。 – mike628 2011-06-02 19:16:47