2013-01-05 67 views
1

給定兩個表,photoskeywords,其中photos.ID = keywords.photos,我怎樣才能從一個查詢中刪除兩個表中的相同行? photos表有單個記錄,而keywords有9個對photos記錄的引用。多個刪除語句與單個查詢

我已經試過

DELETE FROM photos 
INNER JOIN keywords ON photos.ID = keywords.photo 
WHERE photos.ID = 262; 

我得到一個錯誤,說明1064存在一個錯誤開始INNER JOIN keywords,繼續對語句的其餘部分。

然而,當我通過

SELECT * FROM photos 
INNER JOIN keywords ON photos.ID = keywords.photo 
WHERE photos.ID = 262; 

conovert的DELETE語句來SELECT *,我得到了一組9行返回。

回答

3

你需要添加表的名稱要刪除

DELETE photos 
FROM photos 
    INNER JOIN keywords ON photos.ID = keywords.photo 
WHERE photos.ID = 262; 
+0

該訣竅刪除它們可能會被刪除!爲什麼表限定符需要包含在這個語句中,但不是來自普通的'DELETE'用法? – Jason

+0

,因爲它涉及多個表,這就是爲什麼你需要指定刪除記錄應該發生的地方。 ':D' –

1

不能明確從多個表中刪除。

但是,如果keywords.photos是國外的凸起點到photos.id「ON DELETE CASCADE」,當你從照片

+0

不幸的是,我不得不爲這個表使用MyISAM引擎,這意味着沒有外鍵支持。因此在我的代碼中實現相同邏輯的必要性。 – Jason