【发布时间】:2016-12-28 21:11:00
【问题描述】:
我想限制循环期间要删除的行数。 下面是表格。请注意,这是示例,两个表都有 20 多列和数百万行:
Table A1:
ID Name
1 Tony
2 Andy
3 Nate
A2
ID Name
1 Tony
2 Andy
我想一次只删除 1 行,并将使用循环重新运行相同的 sql。我试过了:
delete from a1 where id in (select id from a1 inner join a2 on a1.id = a2.id limit 1);
说:
您不能在 FROM 子句中指定目标表 'a1' 进行更新。
有没有办法在mysql中做到这一点?
【问题讨论】:
-
为什么要循环?有什么具体原因吗?
-
顺便说一句,我想你在这里已经够久了,知道 Stack 是如何滚动的。这么多问题,没有一个被接受。您对给出的解决方案的互动也有待商榷。
-
有关如何解决“无法指定更新目标表”问题的链接问题。使用该解决方案并将
LIMIT添加到其中。 -
我不认为链接的副本真的是副本。我很确定正确的解决方案是将子查询转换为相关子查询,该答案未涵盖。
-
@Fred-ii- 知道了。感谢您让我知道我忽略的事情。
标签: mysql subquery correlated-subquery