如何通過單一sql語(yǔ)句實(shí)現(xiàn)多表刪除?
你在刪除多表數(shù)據(jù)時(shí)遇到問題,你的sql語(yǔ)句無法成功刪除所有相關(guān)記錄。這是因?yàn)槟愕恼Z(yǔ)句使用的是內(nèi)連接,這要求所有被連接的表都必須含有要?jiǎng)h除記錄的id。第三張表中沒有符合條件的數(shù)據(jù),導(dǎo)致前兩張表中的數(shù)據(jù)也無法刪除。
要解決此問題,你可以使用左連接。左連接允許你刪除在任意一個(gè)表中存在該id的記錄,即使其他表中沒有對(duì)應(yīng)記錄。
改正sql語(yǔ)句:
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);
登錄后復(fù)制
使用左連接后,只要前兩張表中的任意一張含有需要?jiǎng)h除記錄的id,該記錄就會(huì)被刪除,即使第三張表中沒有對(duì)應(yīng)記錄。
sql學(xué)習(xí)資源: