Mysql 从2个表中删除
我的数据库中有两个表 用户Mysql 从2个表中删除,mysql,sql-delete,Mysql,Sql Delete,我的数据库中有两个表 用户 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
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”
我想编写一个查询,当触发时,从我的“用户”表中删除该行,同时从兴趣表中删除与该用户相关的所有数据
我不知道如何做到这一点,而且我在谷歌也没有运气
如果有人能给我一些建议,或者至少告诉我在哪里可以找到这些信息,那将是一个很大的帮助
在我的脑海中,我认为这将是一个大致如下的过程:
DELETE FROM users, interests WHERE ID = '$userID' AND User_ID = '$userID'
删除用户、兴趣
来自用户
在users.ID=interests.User\u ID上左连接兴趣
其中users.ID=;
当然,如果
interests
表是InnoDB&对用户有一个外键约束,用户在删除级联时有一个,
这将在用户被删除时自动完成。如果您使用的是InnoDB,那么您可以为interests(用户ID)定义一个外键约束
引用users.ID
并在删除级联上具有。然后您只需从用户
中删除该行,并且兴趣
中引用该用户的所有行将自动删除
如果您不使用InnoDB,那么Wrikken的解决方案可以正常工作。查询可以工作吗?一般来说,我建议按users.ID=interests.USER\u ID连接这两个表。如果在delete CASCADE上使用了,则不需要手动删除兴趣记录。在这种情况下,您只需要删除该用户。其余的将由DB删除@madflow“做查询工作”不,它不能,因为他没有定义哪个列属于哪个表。可以在中找到正确的查询。请注意,cascades仅适用于InnoDB引擎。谢谢Wrikken,我可以问一下ID周围的内容会做什么,或者为什么会在那里吗?没有,它只是在我的示例中放置ID的占位符,因此类似于where users.ID=123代码>
DELETE users, interests
FROM users
LEFT JOIN interests ON users.ID = interests.User_ID
WHERE users.ID = <id>;