原始问题: 假设我的数据库中有10个用户,我希望根据已排序的created_at日期获得第6个(或第3个或第8个,无论如何)用户。我怎么能这样做?
编辑问题: 假设我的数据库中有10个用户,并且我有一个特定的用户,如果我在created_at日期对它们进行排序,我该如何确定第n个用户呢? (因此用户X是基于created_at的所有用户的第n个用户)
对此感到抱歉!
答案 0 :(得分:1)
这应该有效:(显然必须根据需要更改偏移值)
User.order(:created_at).limit(1).offset(6)
好的,编辑后的问题使这个问题变得更加复杂。不确定ActiveRecord是否适合在这里使用。有些数据库有一种虚拟的“rownumber”,你可以用它。但我们假设我们没有那个。 SQL本身不能这样做,因此您只能计算“少于”您所查找的记录数。
假设我们已将相关用户设为user
。
然后我们可以这样做:
User.where("created_at < :created_at", created_at: user.created_at).count
至少我能想到的最好。
答案 1 :(得分:0)
User.order("created_at DESC").limit(1).offset(6)
or
User.order("created_at DESC").limit(1).offset(6)
它的工作方式如下:
select * from users order by created_at DESC LIMIT 5 OFFSET 30;