我正在尝试根据时间戳删除除最近的 25 个条目之外的所有条目。我试过这个:
DELETE FROM `chat` WHERE `IndexNo` NOT IN(SELECT `IndexNo` FROM `chat` ORDER BY `Timestamp` DESC LIMIT 25)
产生这个错误:
#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
有没有办法做到这一点?
最佳答案
您不能依赖 IN/ALL/ANY/SOME
子查询中的 LIMIT
,而是可以使用多删除语法:
DELETE
`chat`
FROM
`chat`
LEFT JOIN (SELECT `IndexNo` FROM `chat` ORDER BY `Timestamp` DESC LIMIT 25) AS `selected`
ON `chat`.`IndexNo`=`selected`.`IndexNo`
WHERE
`selected`.`IndexNo` IS NULL;
-根据manual , 这将从 MySQL 5.0 开始起作用
关于MySQL删除所有未选中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18511511/