Подтвердить что ты не робот

Инструкция удаления Mysql с ограничением

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

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

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

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

Не знаю, что случилось.

4b9b3361

Ответ 1

Вы не можете указать смещение в DELETE 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 column

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