所有三个表都不同。他们唯一的共同点是id
和image
仅当每个表中都有行时,此查询才有效。
最好的方法是什么?请不要看到使用准备好的陈述。我的待办事项清单上已有:)
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
答案 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不支持完全外连接。
三个单独的更新可能是最简单的方法。