[英]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.