我最近开始使用表之间的关系,当我尝试连接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)
有任何想法吗?
解决方法:
您不需要在子查询中进行JOIN:
DELETE FROM Menus
WHERE restid NOT IN (SELECT id FROM Eng_Restaurants)
标签:mysql,sql
来源: https://codeday.me/bug/20190718/1492054.html