MySQL 5.1 не позволяет мне использовать объявить в пределах.Я перепробовал все альтернативные методы, но ничего не получилось, и я не могу обновить версию MYSQL. - PullRequest
3 голосов
/ 18 июня 2019

MySQL 5.1 не позволяет мне использовать объявленную переменную в пределе. Я перепробовал все альтернативные методы, но ничего не получилось, и я не могу обновить версию MYSQL. Есть ли другой способ, которым я могу выполнить этот запрос без ошибок в MySql 5.1. Я пробовал тот же запрос в MySql 5.6 и выше, и он работает нормально.

delimiter $$
CREATE event `cleaner` ON schedule every 7 day enable do
BEGIN
DECLARE `logCount` int(11);
SET `logCount` = (Select count(*) from `eventlogs`) - 5000;
DELETE FROM `eventlogs` ORDER BY `EventID` ASC LIMIT `logCount`;
END;

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

1 Ответ

1 голос
/ 18 июня 2019

Выберите 5001-е наибольшее EventID, а затем удалите все, что меньше или равно:

BEGIN
    DECLARE `lastEventID` int(11);
    SET `lastEventID` = (
        Select `EventID`
        from `eventlogs`
        ORDER BY `EventID` DESC
        LIMIT 1
        OFFSET 5000
    );
    DELETE FROM `eventlogs` WHERE `EventID` <= `lastEventID`;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...