我想限制循环期间要删除的行数。 以下是表格。请注意,这是示例,两个表都有20多列和数百万行:
Table A1:
ID Name
1 Tony
2 Andy
3 Nate
A2
ID Name
1 Tony
2 Andy
我想一次只删除一行,并使用循环重新运行相同的sql。我试过了:
delete from a1 where id in (select id from a1 inner join a2 on a1.id = a2.id limit 1);
说:
您无法在FROM子句中为更新指定目标表'a1'。
我有办法在mysql中执行此操作吗?
答案 0 :(得分:0)
我不知道你为什么要使用循环。但是我怀疑你想要一个相关的子查询:
delete from a1
where a1.id in (select a2.id from a2 where a1.id = a2.id limit 1);
注意:使用limit
而不使用order by
看起来非常危险。这将删除每个a1.id
的任意行。