使用单个查询更新多个表

时间:2014-09-05 02:31:07

标签: mysql sql

所有三个表都不同。他们唯一的共同点是idimage

仅当每个表中都有行时,此查询才有效。

最好的方法是什么?请不要看到使用准备好的陈述。我的待办事项清单上已有:)

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

我尝试使用LEFT JOIN,但也无法使用。查询错了吗?

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

1 个答案:

答案 0 :(得分:1)

三次单独更新怎么样?

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';

尝试进行多表更新时遇到的问题是,它使用join。唉,如果其中一个表为空,那么连接将不会在任何表中返回任何行进行更新。您可以使用left join,但是您必须假设第一个表不为空。而且,MySQL不支持完全外连接。

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