MySQL 同时 delete 多张表的数据

三张表

article ,tag,article_tag

article 文章表

create table article(
    article_id int primary key auto_increment,
    article_title varchar(100)
);
insert into article(article_title) values
('Spring源码分析'),
('Spring生命周期'),
('SpringMVC源码分析'),
('MySQL....');

tag 标签表

create table tag(
    tag_id int primary key auto_increment,
    tag_name varchar(100)
);
insert into tag(tag_name) values
('Spring'),
('SpringMVC'),
('Java'),
('MySQL');

article_tag 文章与标签的中间表

create table article_tag(
    article_tag_id int primary key auto_increment,
    article_id int,
    tag_id int
);
insert into article_tag(tag_id,article_id) values
(1,1),
(1,2),
(2,2),
(3,1),
(3,2),
(3,3),
(4,4);

关联查询的数据

删除 文章id 为 2 的相关数据

# 删除 文章id 为 2 的相关数据
DELETE article_tag,
article 
FROM
    article_tag
    INNER JOIN article ON article_tag.article_id = article.article_id 
WHERE
    article.article_id = 2;

执行的结果,再查询

 从这里可以看得出,成功删除了 4 条数据,4 条数据 =   article 表中id为2的数据(只有一条) + article_tag 表中 与 article_id = 2 的  3 条数据。

 

原文地址:https://www.cnblogs.com/oukele/p/13407524.html