首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在子查询中删除where id时出错

问在子查询中删除where id时出错
EN

Stack Overflow用户
提问于 2012-10-21 11:44:11
回答 3查看 435关注 0票数 0

我在windows上的mysql客户端shell中运行了这个程序。我不明白问题出在哪里。我知道delete from PageInfo where id是对的。我知道子查询是正确的。我认为in是正确的,但我不经常使用它。整个过程看起来都是正确的,但我在某个地方遇到了问题。我不明白这个错误信息。

如何删除子查询返回的所有ids?

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-21 11:56:27

在MySQL中,您不能修改属于子查询的同一个表。

欲了解更多信息,请访问http://dev.mysql.com/doc/refman/5.6/en/update.html

Workaround for your problem is described here.

票数 2
EN

Stack Overflow用户

发布于 2012-10-21 12:06:08

你可以这样做

代码语言:javascript
复制
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)
票数 4
EN

Stack Overflow用户

发布于 2012-10-21 11:52:22

来自mysql website。如上所述,不允许从同一张表中选择和修改

在以下情况下会出现此错误:尝试修改表并从子查询中的同一个表中进行选择

代码语言:javascript
复制
  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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12994768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档