天天看點

mysql 多表關聯删除

兩張表關聯删除:

DELETE a,b FROM table1 a
INNER JOIN  table2 b
ON a.id = b.aid
WHERE a.id = '1'
//或者也可以
DELETE a,b FROM table1 a,table2 b
WHERE a.id = b.aid
AND a.id = '1'
           

三張表删除

DELETE a,b,c FROM table1 a 
INNER JOIN  table2 b 
ON a.id = b.aid 
INNER JOIN table3 c 
ON a.id = c.aid 
WHERE a.id = '1'
           

不過這樣有一個問題,就是如果a表裡資料,而b表或者c表裡沒資料,那麼整個删除就失敗,即删除0條資料

如果你的主表一定有資料,而關聯的表有可能有資料也有可能沒資料的話,我們可以通過左連接配接删除的方式,把兩張表都删除。無論關聯的表有沒有資料,主表都可以删除成功

DELETE a.* ,b.* ,c.*
FROM table1 a
LEFT JOIN table2 b
ON a.id = b.aid
LEFT JOIN table3 c
ON a.id = c.aid
WHERE a.id = 
           

繼續閱讀