mysql从连接表中删除关系,然后删除行,如果它不再包含任何更多的关系

时间:2018-04-07 02:47:58

标签: mysql sql

我有一个包含用户,列表和users_to_lists表的数据库。

当用户从列表中删除自己时,我使用以下内容:

"DELETE FROM users_to_lists WHERE user_id=? AND list_id=?"

我想要做的是通过删除列表进行清理,只有在最后一个用户从列表中删除了自己并且不确定如何执行此操作后,还没有剩下用户。

所以我想做的是: 1.删​​除用户列表的关系 2.检查列表是否有任何用户关系 3.如果没有用户关系,删除列表

想知道在这种情况下最佳做法是什么

2 个答案:

答案 0 :(得分:0)

我建议您查看Foreign Key Constraints

的文档

您可以使用ON_DELETE CASCADE属性优化查询。查看文档。如果您有任何疑问,可以在评论中询问我。

答案 1 :(得分:0)

您可以将其与delete语句一起添加,以清除所有未使用的列表。

DELETE FROM list WHERE id <> (SELECT list_id FROM users_to_lists)