Rails - 如何从数据库中提取特定的排序数据

时间:2010-10-07 01:46:05

标签: mysql ruby-on-rails

我有一个包含列(用户名,点数)的数据库。我正在调用从该数据库返回一些字段以在程序中使用。我想拉:

  1. 得分最高的前10位用户
  2. 请求排名的用户名上方/下方的5位用户
  3. 我可以轻松地拉到前十名......

    top_users = UserPoints.find(
      :all,
      :conditions => ['points > 0'],
      :order => "points DESC",
      :limit => 10)
    

    使用find_by_username拉取用户名请求的特定条目也很容易,但我怎样才能确定该用户的排名?那么,你将如何找到上面的5个用户和5个特定用户以下的用户(假设用户不在前10名)?

    谢谢!

    -mark

1 个答案:

答案 0 :(得分:1)

也许使用两个查询来做?

当前用户以上的用户:
UserPoints.all(:conditions => ['points > ?', user.points], :limit => 5, :order => 'points asc')

当前用户以下的用户:
UserPoints.all(:conditions => ['points < ?', user.points], :limit => 5, :order => 'points desc')

也许有一种方法可以使用单个查询来实现,我不是SQL专家,但这应该为您解决。