MySQL 删除普通行但限制行

MySQL delete common rows but limit rows

我想限制在循环中删除的行数。 下面是表格。请注意,这是示例,两个表都有 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); 

说:

you cannot specify target table 'a1' for update in FROM clause.

有什么方法可以在 mysql 中做到这一点?

我不知道你为什么要使用循环。但是我怀疑你想要一个相关的子查询:

delete from a1
    where a1.id in (select a2.id from a2 where a1.id = a2.id limit 1); 

注意:使用 limit 而不使用 order by 看起来很危险。这将为每个 a1.id.

删除一个 任意