2014-09-05 54 views
0

所有三個表格都不相同。它們唯一共同點是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

三個獨立更新如何?

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不支持完整的外連接。

三個獨立的更新可能是最簡單的方法。

+0

嗯,我會研究'LEFT JOIN',因爲內容表永遠不會是空的。 – Draven 2014-09-05 02:39:41

+0

看起來不像'LEFT JOIN'可以工作,但我可能做錯了。如果你可以看看,我把這個查詢放在我原來的帖子裏。 – Draven 2014-09-05 03:07:29

+0

@Draven。 。 。這顯然不會做你想做的。 'image'字段似乎在'content'中包含一個字符串,但在另外兩個表中包含一個數字。我會堅持三個單獨的查詢。 – 2014-09-05 03:42:49