亚洲国产第一_开心网五月色综合亚洲_日本一级特黄特色大片免费观看_久久久久久久久久免观看

Hello! 歡迎來到小浪云!


如何使用 SQL 單語句從多張表中刪除數(shù)據(jù),即使其中一張表沒有匹配項?


avatar
小浪云 2024-11-11 177

如何使用 SQL 單語句從多張表中刪除數(shù)據(jù),即使其中一張表沒有匹配項?

sql單語句實現(xiàn)多表刪除

此處要實現(xiàn)通過單一語句從三張表中刪除相關(guān)記錄,目標(biāo)是通過dishid執(zhí)行刪除操作。

提供的初始sql語句中,使用了inner join連接三個表,但由于第三張表沒有任何匹配記錄,導(dǎo)致前兩張表的數(shù)據(jù)未被刪除。

正確的改進(jìn)方式是使用left join連接,即使第三張表沒有匹配記錄,也能刪除前兩張表中的數(shù)據(jù)。修改后的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 );
登錄后復(fù)制

此語句將根據(jù)dishid在所有三張表中刪除相關(guān)記錄,無論其中哪張表存在要刪除的數(shù)據(jù)。

值得注意的是,inner join和left join之間的區(qū)別在于,inner join僅匹配同時在所有連接表中找到匹配項的記錄,而left join將返回所有匹配任意連接表的記錄,即使其他連接表中沒有匹配項。

相關(guān)閱讀