1

我有一个这样的数据库

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 查询,但我无法修复它。有人能帮帮我吗?:)

4

2 回答 2

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:请在执行上述语句前备份您的数据库

于 2013-03-24T12:14:00.347 回答
0

定义外键约束时,您可以指定删除的记录是否影响与外键相关的其他记录。在声明外键时,您可以指定一个选项:删除级联。假设表B属于表A。如果您在删除级联上指定:如果表 B 中的记录与表A中的记录相关,则当表A中的该记录被删除时,这将导致表B中的记录被删除

于 2013-03-24T12:36:56.473 回答