Mysql 使用单个查询更新多个表

Mysql 使用单个查询更新多个表,mysql,sql,Mysql,Sql,这三张桌子都不一样。他们唯一的共同点是id,和image 仅当每个表中都有行时,此查询才起作用 最好的方法是什么?请不要使用事先准备好的语句。这已经在我的待办事项清单上:) 我尝试使用左连接,但也不起作用。问错了吗 UPDATE content LEFT JOIN subcontent on subcontent.image = content.image LEFT JOIN products on products.image = content.image SET conte

这三张桌子都不一样。他们唯一的共同点是
id
,和
image

仅当每个表中都有行时,此查询才起作用

最好的方法是什么?请不要使用事先准备好的语句。这已经在我的待办事项清单上:)

我尝试使用
左连接
,但也不起作用。问错了吗

UPDATE content
LEFT JOIN subcontent on
    subcontent.image = content.image
LEFT JOIN products on
    products.image = content.image
SET content.image = NULL, subcontent.image = NULL, products.image = NULL
WHERE content.image = 'test.png'
OR subcontent.image = 3
OR products.image = 3

三次单独的更新怎么样

UPDATE subcontent
   SET subcontent.image = NULL
   WHERE subcontent.image = 3;

UPDATE products
   SET products.image = NULL
   WHERE products.image = 3;

UPDATE content
   SET content.image = NULL
   WHERE content.image = 'test.png';
尝试多表更新时遇到的问题是,这会使用
连接。唉,如果其中一个表是空的,那么连接将不会返回任何表中要更新的行。您可以使用
左联接
,但必须假设第一个表不是空的。而且,MySQL不支持完全外部连接


三个单独的更新可能是最简单的方法。

Hm,我将研究
LEFT JOIN
,因为
content
表中的内容永远不会为空。看起来
LEFT JOIN
也不起作用,但我可能做错了。如果你能看一下的话,我把这个问题放在我原来的帖子里。@Draven。这显然不是你想要的。
image
字段似乎在
content
中包含一个字符串,但在其他两个表中包含一个数字。我将坚持三个独立的问题。
UPDATE subcontent
   SET subcontent.image = NULL
   WHERE subcontent.image = 3;

UPDATE products
   SET products.image = NULL
   WHERE products.image = 3;

UPDATE content
   SET content.image = NULL
   WHERE content.image = 'test.png';