我想重新训练最后25个输入的记录并根据id删除剩余记录。
DELETE * FROM list
WHERE id NOT IN
(
SELECT *
FROM (
SELECT *
FROM 'list'
ORDER BY id DESC LIMIT 25
) as rows
)
答案 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);
我会首先用一些虚拟数据测试它,但我相信它会做你想要的。