MySQL删除常见行但限制行

时间:2016-12-28 21:11:01

标签: mysql subquery correlated-subquery

我想限制循环期间要删除的行数。 以下是表格。请注意,这是示例,两个表都有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中执行此操作吗?

1 个答案:

答案 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任意行。