2014-09-03 552 views
0

我敢肯定,這是一個非常基本的問題,但我不知道,最近開始使用MySQL。我已經修改,創建了數據庫,用戶,表,添加和修改了表中的條目,但現在我想我需要在這裏使用Join,但我不確定。如何刪除數據庫中MySQL表中的相關數據?

在同一個分貝我有兩個表。任務表有兩列感興趣的用戶和keyid。雖然活動表有一列是感興趣的任務。我需要做的是刪除特定用戶的表任務中的所有任務。但是,這也意味着我需要刪除這些任務的所有活動。現在,這些關聯的方式是,任務表中的keyid值是活動表中任務列中的值。

我的問題是如何編寫DROP或DROP + JOIN查詢來執行此操作?

回答

0

你可以在這一個喜歡使用JOIN

DELETE Tasks, Activities 
FROM Tasks INNER JOIN Activities 
ON Tasks.KeyID = Activities.Task 
WHERE Tasks.User = 'User Name Here' 

但它會更好,如果你使用ON DELETE CASCADE,當你設計的表,這樣你會從母親表中刪除,並子表的所有相關記錄也將被自動刪除。

查看示例here

+0

我會看看鏈接,但現在我不想重新設計我的表。 – aarelovich 2014-09-03 12:12:20

+0

然後,您可以使用單個查詢,而不是如上所示的兩個查詢。 – Edper 2014-09-03 12:17:55

+0

當然,是的。我認爲這也更容易遵循。謝謝! – aarelovich 2014-09-03 12:40:53

0

你可以在2個單獨的查詢中做到這一點?

DELETE FROM activities WHERE task IN 
    (SELECT keyid FROM tasks WHERE user = 'CertainUser') ; 
DELETE FROM tasks WHERE user = 'CertainUser' ; 
+0

完全!我沒有一個查詢限制。我只是想知道如果我正確理解它。第一個查詢刪除了所有活動,以便列任務在集合中具有值,從而導致查詢,您在其中詢問所有keyid是否爲特定用戶的任務。我理解正確嗎? (第二個查詢很明顯) – aarelovich 2014-09-03 10:50:54

+0

是的,這是對的:) – lpg 2014-09-03 11:17:00