Contents

MySQL delete 一次刪除指定多個資料表欄位方法

Contents

上一篇,要嘗試刪除語句
在想刪除主表後,其餘關聯表示不是需要手動刪除??
但這篇先不談這個
最近看到兩篇發現 sql delete 可以做 join 動作刪除!!!
先來筆記吧!!

發現可能不是每個 DB 都可以這樣做
db2 可能沒有!! IBM DELETE 介紹頁面
但為什麼我想一次做完呢?
因為現在 DB 我們公司做 auto commit
所以我想一次解決 XDD

指細看也沒有人說不要用

1
2
3
4
-- DELETE 刪除大法
delete a1, a2 FROM `db`.`a1_table` a1 JOIN `db`.`a2_table` a2 ON a1.id = a2.a1_id WHERE a1.id = 1;
-- 另類刪除方法
delete a1, a2 FROM `db`.`a1_table` a1, `db`.`a2_table` a2 WHERE a1.id = a2.a1_id and a1.id =1;

這邊有小提示

delete ... from 中間是指要刪除的表格(可以使用自訂的 table)

這邊上面用 inner join 會遇到有一個問題
所以當關聯表沒資料,就不會刪掉
所以改成 left join 會比較好

強者我同事之前提過 letcode 有人這樣解題
leetcode/database/DeleteDuplicateEmails at master · int32bit/leetcode

1
2
3
4
DELETE p1 FROM Person p1,
    Person p2
WHERE
    p1.Email = p2.Email AND p1.Id > p2.Id

MySQL DELETE JOIN: Deleting Data from Multiple Tables
先記到這樣!!!