我有一张像这样的 table
entryid, roomid
1 1
2 55
3 1
4 12
5 1
6 44
7 1
8 3
9 1
现在我想删除 roomid = 1 的所有条目并保留 剩下 roomid = 1 的最新 3 个(最好只用一个命令)
最后,entryid: 1 和 3 被删除,entryid 6, 7, 9 继续保留(确保所有其他 roomid 仍会保留)
编辑: 感谢帮助。下面我添加了我自己的解决方案,供大家感兴趣
我启动了 new Question如何将其带入一个命令中。你可以在那里帮助我。
最佳答案
DELETE
支持 ORDER BY
和 LIMIT
子句,因此这是可能的。但是,由于 DELETE
的引用限制和 LIMIT
参数,您需要两个查询。
SELECT COUNT(*) AS total FROM table WHERE roomid = 1;
-- run only if count is > 3
DELETE FROM table WHERE roomid = 1 LIMIT total - 3;
请注意,这可能需要中介技术。我已经显示了查询以供引用。
关于mysql - 删除所有行并保留最新的 x left,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3312531/