本文将解决如何在sql语句中通过单一语句实现多表删除。
问题
有一张dish表,一个dish_flavor表和一个setmeal_dish表。需要删除dishid为51和52的所有记录。但是,使用以下sql语句时,并没有删除相应记录:
原因
此语句本质上等价于:
由于第三张表中没有符合条件的数据,因此不会删除任何记录。内连接要求三张表中都必须存在该id的记录,才会删除该记录。
解决方案
如果希望当有任何一张表中存在要删除的id时就进行删除,可以使用左连接:
这样,即使第三张表中没有数据,前两张表中的数据仍然会被删除。