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,为请求的用户名
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专家,但这应该可以为您解决问题。目前不需要单个查询。真棒的回答。非常感谢。目前不需要单个查询。真棒的回答。非常感谢。