Mysql удалить заявление с ограничением - PullRequest
24 голосов
/ 22 августа 2011

Я пытаюсь удалить строки из таблицы, но получаю ошибку.

DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;

Я получаю эту ошибку на 50:

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать около '50' в строке 1

Понятия не имею, что не так.

1 Ответ

42 голосов
/ 22 августа 2011

Вы не можете указать смещение в DELETE 's LIMIT предложении.

Так что единственный способ сделать это - переписать ваш запрос примерно так:

DELETE FROM `chat_messages` WHERE id IN (select id from (select id
                                           FROM `chat_messages`
                                       ORDER BY `timestamp` DESC
                                          LIMIT 20, 50) x)

Предположим,что у вас есть первичный ключ id столбец

UPD : вам нужно реализовать двойное вложение, чтобы обмануть mysql, поскольку он не позволяет выбирать из измененной в данный момент таблицы (благодаря Martin Smith)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...