2016-12-28 2 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' для обновления в ЕКОМ.

Есть ли способ, которым я могу это сделать в mysql?

+0

Зачем нужен цикл? Любая конкретная причина? – GurV

+2

Btw, я думаю, вы были здесь достаточно долго, чтобы знать, как Stack rolls. Так много вопросов, и никто не принимал. Ваше взаимодействие с решениями также остается сомнительным. –

+0

См. Связанный вопрос, как решить проблему «не указать целевую таблицу для обновления». Используйте это решение и добавьте в него 'LIMIT'. – Barmar

ответ

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.

Смежные вопросы