【问题标题】:Is there an easy way to get the record number N in a query?有没有一种简单的方法可以在查询中获取记录号 N?
【发布时间】:2011-05-31 06:51:51
【问题描述】:
我想要实现的,可以(以低效的方式)像这样完成:
records = SomeModel.where(:some_field => "some value").all
required_record = records[n]
... 其中 n 是记录在 作用域(按“where”)结果中的给定位置。
显然,对于大桌子来说效率很低。有没有办法在不获取所有记录的情况下实现这一点?
【问题讨论】:
标签:
sql
ruby-on-rails
activerecord
scope
【解决方案1】:
使用offset 和limit 的组合仅获取您想要的行。例如,仅获得第 5 个结果:
SomeModel.where(:some_field => "some value").offset(5).limit(1)
【解决方案2】:
呃,我不确定我是否理解你的问题......数据库通常不关心行的顺序,所以你是按字段排序吗?如果是这样,您可以使用 PostgreSQL 中的 rank() 函数(http://www.postgresql.org/docs/current/static/tutorial-window.html)。