如何通過單一sql語句實現(xiàn)多表刪除?
你在刪除多表數(shù)據(jù)時遇到問題,你的sql語句無法成功刪除所有相關記錄。這是因為你的語句使用的是內(nèi)連接,這要求所有被連接的表都必須含有要刪除記錄的id。第三張表中沒有符合條件的數(shù)據(jù),導致前兩張表中的數(shù)據(jù)也無法刪除。
要解決此問題,你可以使用左連接。左連接允許你刪除在任意一個表中存在該id的記錄,即使其他表中沒有對應記錄。
改正sql語句:
DELETE dish, dish_flavor, setmeal_dish FROM dish LEFT JOIN dish_flavor ON dish.id = dish_flavor.id LEFT JOIN setmeal_dish ON dish.id = setmeal_dish.id WHERE dish.id IN (51, 52);
登錄后復制
使用左連接后,只要前兩張表中的任意一張含有需要刪除記錄的id,該記錄就會被刪除,即使第三張表中沒有對應記錄。
sql學習資源: