2014-09-03 127 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