2016-12-28 45 views
-1

我想限制在循環中要刪除的行數。 以下是表格。請注意,這是樣品和兩個表具有超過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中做到這一點?

+0

爲什麼循環?任何具體原因? – GurV

+2

順便說一句,我想你已經在這裏足夠長的時間知道堆棧如何滾動。這麼多問題,都沒有接受。您給出的解決方案的交互也是值得懷疑的。 –

+0

查看關於如何解決「無法指定更新目標表」問題的鏈接問題。使用該解決方案併爲其添加「LIMIT」。 – Barmar

回答

0

我不知道爲什麼你會使用循環。不過,我懷疑你想有一個相關子查詢:

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

注:若沒有order by使用的limit看起來真的很危險。這將刪除每個a1.id任意行。