MySQL删除公共行但限制行
问题描述:
我想限制在循环中要删除的行数。 以下是表格。请注意,这是样品和两个表具有超过20列,数百万行:MySQL删除公共行但限制行
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);
说:
你不能指定目标表 'A1' 在FROM子句更新。
有没有办法可以在mysql中做到这一点?
答
我不知道为什么你会使用循环。不过,我怀疑你想有一个相关子查询:
delete from a1
where a1.id in (select a2.id from a2 where a1.id = a2.id limit 1);
注:若没有order by
使用的limit
看起来真的很危险。这将删除每个a1.id
的任意行。
为什么循环?任何具体原因? – GurV
顺便说一句,我想你已经在这里足够长的时间知道堆栈如何滚动。这么多问题,都没有接受。您给出的解决方案的交互也是值得怀疑的。 –
查看关于如何解决“无法指定更新目标表”问题的链接问题。使用该解决方案并为其添加“LIMIT”。 – Barmar