从SQL表中选择最后25条记录

时间:2014-11-09 17:44:23

标签: mysql sql

我想重新训练最后25个输入的记录并根据id删除剩余记录。

DELETE * FROM list 
WHERE id NOT IN 
( 
    SELECT * 
    FROM ( 
        SELECT * 
        FROM 'list' 
        ORDER BY id DESC LIMIT 25 
    ) as rows 
)

3 个答案:

答案 0 :(得分:1)

DELETE * 
FROM 'list' 
WHERE id NOT IN ( SELECT id 
                  FROM 'list' 
                  ORDER BY id DESC 
                  LIMIT 25 )

答案 1 :(得分:0)

在MySQL中不允许在从同一个表中进行选择时进行删除。

您可以尝试这样的事情:

 SELECT @rows_to_delete:=COUNT(*)-25 FROM list;
 DELETE FROM list ORDER BY id ASC LIMIT 0, @rows_to_delete;

注意:未经测试,请先在真实数据上运行之前进行测试。

答案 2 :(得分:0)

我认为您的查询很接近,但您需要更改的只是过滤子查询中的ID,不要选择所有内容,因为这没有意义。您想要查看单个项目(id)是否不属于一组事物(所有列)。

尝试将您的查询更改为:

DELETE FROM list
WHERE id NOT IN(
  SELECT id
  FROM list
  ORDER BY id DESC
  LIMIT 25);

我会首先用一些虚拟数据测试它,但我相信它会做你想要的。