MySQL 中使用 JOIN 删除子表记录
在 MySQL 等关系数据库中,删除记录可能涉及多个表和复杂的关系。一种情况是,您需要根据涉及父表的条件从子表中删除记录。
场景:
考虑以下数据库结构:
目标:
假设您希望通过删除客户端本身来删除与给定客户端关联的所有帖子。但是,posts 表不直接引用 client_id。它只引用 project_id。
初始尝试(无效):
<code class="language-sql">DELETE FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
解决方案:
为了纠正问题并成功删除帖子,您需要在 DELETE 语句中指定表名 (posts):
<code class="language-sql">DELETE posts FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
此修改后的查询根据连接条件明确地将 posts 表作为删除目标。
以上是如何在 MySQL 中使用 JOIN 从子表中删除记录?的详细内容。更多信息请关注PHP中文网其他相关文章!