MySQL 5.1不允许我在限制中使用declare。我尝试了所有的替代方法,但没有任何效果,我无法更新MYSQL版本
MySQL 5.1不允许我在limit中使用声明的变量。我尝试了所有的替代方法,但没有任何效果,我无法更新MYSQL版本。在MySql 5.1中,是否有其他方法可以运行此查询而不出错。我在MySql 5.6及更高版本中尝试了相同的查询,效果很好MySQL 5.1不允许我在限制中使用declare。我尝试了所有的替代方法,但没有任何效果,我无法更新MYSQL版本,mysql,sql,Mysql,Sql,MySQL 5.1不允许我在limit中使用声明的变量。我尝试了所有的替代方法,但没有任何效果,我无法更新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` = (Selec
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”的正确语法;
在第5行结束,选择第5001个最大事件ID,然后删除所有较小或相等的事件:
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;
您想保留最多5000行吗?我只想保留最新的5000行并删除旧日志。EventID是自动递增的。这非常有效。你是救世主。我被困在这里好几个小时了。非常感谢。