簡體   English   中英

從差異表中刪除幾個相關的行

[英]delete several related rows from diffrent tables

我有一個這樣的數據庫

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查詢,但無法解決。 有人可以幫我嗎? :)

您可以簡單地加入表,最好的部分是,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:請在執行上述語句之前備份數據庫

在定義外鍵約束時,您可以使用外鍵指定刪除的記錄是否影響與之相關的其他記錄,在聲明外鍵時可以指定一個選項: 在刪除級聯上 假設表B屬於表A。 如果您在刪除級聯注明:這將導致表B中的記錄被刪除,如果他們在表格中記錄,當表A本記錄被刪除相關

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM