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