我有像这样的数据库
table 1 : area
+------------+
| id | name |
+------------+
| 1 | area1 |
+------------+
table 2 : area_members
+------------------------+
| rel_area | rel_school |
+------------------------+
table 3 : school
+------------+
| id | name |
+------------+
table 4 : school_members
+---------------------------+
| rel_school | rel_student |
+---------------------------+
table 5 : student
+------------+
| id | name |
+------------+
在此表中,任何地区都有几所学校,任何学校都有几名学生。 我想删除与' area1'相关的任何内容。 (区域,学校,学生)来自所有这5个表格,删去area1。
我尝试了一些JOIN和UNION查询,但我无法修复它。 可以帮到我吗? :)
答案 0 :(得分:2)
您可以简单地加入表格,最好的部分是,MySQL允许您只在一个查询中删除多个表。
DELETE a, b, c, d, e
FROM area a
INNER JOIN are_members b
ON a.ID = b.rel_area
INNER JOIN school c
ON b.rel_school = c.ID
INNER JOIN school_members d
ON c.ID = d.rel_school
INNER JOIN student e
ON d.rel_student = e.ID
WHERE a.Name = 'area1'
PS:请在执行上述声明之前备份您的数据库
答案 1 :(得分:0)
定义外键约束时,可以指定删除的记录是否影响与外键相关的其他记录 在声明外键时可以指定一个选项: on delete cascade 。 假设表 B 属于表 A 。如果您在删除级联上指定:如果这些记录与表 A 中的记录相关,则会导致表 B 中的记录被删除表 A 中的记录已删除