gpt4 book ai didi

ruby-on-rails - 事件记录 : Select max of limit

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:50 25 4
gpt4 key购买 nike

我正在尝试将以下 SQL 查询转换为 ActiveRecord,它正在融化我的大脑。

delete from table where id <= (
select max(id) from (
select id from table order by id limit 0, 10));

有什么想法吗?

我想做的是限制表中的行数。所以,我想删除少于最近 10 个条目的所有内容。

编辑:通过结合以下几个答案找到了解决方案。

Temperature.where('id < ?', Temperature.order('id DESC').limit(10).pluck(:id).min).destroy_all

这给我留下了最新的 10 个条目。

最佳答案

从您的 SQL 来看,您似乎想要从表中删除前 10 条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:

基于 MurifoX 的版本:

Table.where(:id=>Table.order(:id).limit(10).pluck(:id)).destroy_all

这将有效地执行 WHERE id IN (...)

略短的版本:

Table.order(:id).limit(10).destroy_all

这将简单地获取前 10 条记录并销毁

编辑:要获取除最近的 X 条记录(例如 10 条)以外的所有记录,目前我能想到的唯一方法是:

 Table.order(:id).limit(Table.count - 10).destroy_all if Table.count > 10

本质上,获取最旧的记录,只留下最近的 10 条,然后销毁它们,假设表的大小大于 10。也许有更简洁的方法,但这是我能想到的唯一方法现在。

关于ruby-on-rails - 事件记录 : Select max of limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18366915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com