有一种简单的方法可以在查询中获取记录号N吗?

时间:2010-12-27 19:28:51

标签: sql ruby-on-rails activerecord scope

我想要实现的目标(以低效的方式)可以像这样完成:

records = SomeModel.where(:some_field => "some value").all
required_record = records[n]

...其中n是作用域(由“where”)结果中记录的给定位置。

显然,对于大桌来说效率很低。有没有办法在不获取所有记录的情况下实现这一目标?

2 个答案:

答案 0 :(得分:4)

使用offsetlimit的组合来仅获取所需的行。例如,仅获得第5个结果:

SomeModel.where(:some_field => "some value").offset(5).limit(1)

答案 1 :(得分:0)

呃,我不确定我理解你的问题......数据库通常不关心行的顺序,所以你是否按字段排序?如果是这样,你可以在PostgreSQL中使用类似rank()函数的东西(http://www.postgresql.org/docs/current/static/tutorial-window.html)。