1

我正在尝试根据时间戳删除除 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'

有没有办法做到这一点?

4

2 回答 2

1

您不能依赖LIMITIN/ALL/ANY/SOME查询,而是可以使用多删除语法:

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;

-根据手册,这将从 MySQL 5.0 开始工作

于 2013-08-29T13:05:00.297 回答
0

我猜这是关于子查询的更普遍的问题。尝试在这里查看:LIMIT & IN/ALL/ANY/SOME 子查询的问题

于 2013-08-29T12:55:55.670 回答