我在Windows上运行mysql客户端shell。我不明白问题是什么。我知道delete from PageInfo where id
是正确的。我知道子查询是正确的。我认为是正确的,但我不经常使用它。这一切看起来都很正确但我在某处遇到了问题。我不明白错误信息。
如何删除子查询返回的所有ID?
mysql> delete from PageInfo where id in ( select max(id) from PageInfo where pid
>=2758000 AND pid<2758100 group by pid having count(pid)>1 );
ERROR 1093 (HY000): You can't specify target table 'PageInfo' for update in FROM
clause
答案 0 :(得分:4)
你可以这样做
delete from PageInfo where id = ( SELECT maxid FROM ( select max(id) as maxid from PageInfo where pid >=2758000 AND pid<2758100 group by pid having count(pid)>1) as tmp)
答案 1 :(得分:2)
。如上所述,不允许从同一表中选择和修改
在以下情况下会发生此错误,该错误会尝试修改表并从子查询中的同一个表中进行选择
Incorrectly used table in subquery:
Error 1093 (ER_UPDATE_TABLE_USED)
SQLSTATE = HY000
Message = "You can't specify target table 'x'
for update in FROM clause"
:
答案 2 :(得分:2)
在MySQL中,您无法修改属于子查询的同一个表。
的更多信息