我最近开始使用表之间的关系,当我尝试连接2时,我发现有一些ID不存在外键。
对于这个问题,我们假设我有一个带有id和name的餐馆表,以及一个id为rest_id的菜单表,它是来自餐馆餐桌的外键。
我想删除所有菜单表中不存在的rest_id菜单。
我用过这个:
DELETE FROM `Menus` WHERE restid IN (SELECT DISTINCT `restid` from
`Menus` M left join `Eng_Restaurants` ER on M.`restid` = ER.`ID`
where ER.`ID` is null)
但我收到以下错误:#1093 - 您无法在FROM子句中为更新指定目标表'Menus'。
请注意,子查询确实返回在restaurants表中不存在的ID:
(SELECT DISTINCT `restid` from
`Menus` M left join `Eng_Restaurants` ER on M.`restid` = ER.`ID`
where ER.`ID` is null)
有什么想法吗?
答案 0 :(得分:10)
您不需要在子查询中创建JOIN
:
DELETE FROM Menus
WHERE restid NOT IN (SELECT id FROM Eng_Restaurants)