MySQL中的JOIN删除:删除关联数据
在关系型数据库中,通常需要删除主数据以及关联数据。在MySQL中,可以使用JOIN语句实现级联删除。
问题:
考虑以下表结构:
<code class="language-sql">CREATE TABLE clients ( client_id INT(11), PRIMARY KEY (client_id) ); CREATE TABLE projects ( project_id INT(11) UNSIGNED, client_id INT(11) UNSIGNED, PRIMARY KEY (project_id) ); CREATE TABLE posts ( post_id INT(11) UNSIGNED, project_id INT(11) UNSIGNED, PRIMARY KEY (post_id) );</code>
删除客户时,需要级联删除所有关联的项目和帖子。但是,以下PHP代码无效:
<code class="language-sql">DELETE FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
解决方案:
要成功删除与已删除客户关联的帖子,需要指定要从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>
修改后的代码将在删除客户时删除项目及其关联的帖子。
以上是如何使用JOIN级联删除MySQL中的关联数据?的详细内容。更多信息请关注PHP中文网其他相关文章!