2011-06-02 100 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