从2个表中删除

时间:2011-07-17 20:21:10

标签: mysql sql-delete

我的数据库中有2个表

...用户

ID    Username    Randomkey
1     Dionne      938493
2     Liam        902303
3     James       232039
4     Sarah       320923

利益......

ID    User_ID    Interest
1     3          Army
2     3          Boxing
3     3          Tennis
4     4          Make Up

在我的兴趣表中,'User_ID'等于我的users表中的'ID'。

我想编写一个查询,当触发时,从我的'users'表中删除该行,同时从兴趣表中删除与该用户相关的所有数据。

我不确定如何做到这一点,我对谷歌没有运气。

如果有人能给我一些建议或至少指出我在哪里可以找到这些信息,那将是一个很大的帮助。

在我脑海中,我认为这将是:

DELETE FROM users, interests WHERE ID = '$userID' AND User_ID = '$userID'

2 个答案:

答案 0 :(得分:6)

DELETE users, interests 
FROM users 
LEFT JOIN interests ON users.ID = interests.User_ID
WHERE users.ID = <id>;

当然,如果interests表是InnoDB&amp;对具有ON DELETE CASCADE的用户有外键约束,这将在用户被删除时自动完成。

答案 1 :(得分:3)

如果您正在使用InnoDB,那么您可以为引用interests (User_ID)users.ID的{​​{1}}定义外键约束。然后,您只需删除ON DELETE CASCADE中的行以及users中引用该用户的所有行将自动删除。

如果你没有使用InnoDB,那么Wrikken的解决方案就可以了。