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

Mysql Rails—如何从数据库中提取特定的排序数据,mysql,ruby-on-rails,Mysql,Ruby On Rails,我有一个包含列(用户名、点数)的数据库。我正在打电话从这个数据库返回一些字段,以便在程序中使用。我想拉: 得分最高的前10名用户 要求排名的用户名上方/下方的5个用户 我可以很容易地拔出前10名 top_users = UserPoints.find( :all, :conditions => ['points > 0'], :order => "points DESC", :limit => 10) 使用find_by_username,为请求的用户名

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

  • 得分最高的前10名用户
  • 要求排名的用户名上方/下方的5个用户
  • 我可以很容易地拔出前10名

    top_users = UserPoints.find(
      :all,
      :conditions => ['points > 0'],
      :order => "points DESC",
      :limit => 10)
    
    使用find_by_username,为请求的用户名提取特定条目也很容易,但是如何确定该用户的排名?那么,您将如何查找特定用户上方的5个用户和下方的5个用户(假设该用户不在前10名中)

    谢谢


    -mark

    也许可以使用两个查询来完成

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

    低于当前用户的用户:
    UserPoints.all(:条件=>['points<?',user.points],:limit=>5,:order=>'points desc')


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

    也许可以使用两个查询来完成

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

    低于当前用户的用户:
    UserPoints.all(:条件=>['points<?',user.points],:limit=>5,:order=>'points desc')


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

    目前不需要单个查询。真棒的回答。非常感谢。目前不需要单个查询。真棒的回答。非常感谢。