我想要排行榜,但可能会发生多个用户的得分相同且得分最高的问题,所以我想选择一个达到该得分的人,所以我使用了以下查询,但它没有给我正确结果。
我在rails技术上使用ruby。
top_score_cards=Score.order("updated_at DESC,points DESC").uniq
答案 0 :(得分:0)
您的参数订单需要采用相反的顺序:您可以按照最新的顺序进行订购,如果存在" tie"更新时间,您将获得得分最高的那个。它需要反过来。
此外,如果您想要首先得到该分数的人,您需要按" updated_at ASC"进行排序,因为这将首先返回最低时间。你可以说'#34; updated_at"自从" ASC"是默认值。
例如,你可以获得最高分,(最高分如果有高分并列),
top_score = Score.order("points DESC, updated_at").first
我不确切地知道你正在尝试用uniq做什么,而且你不能很好地解释你的要求,但希望这会让你更进一步。
答案 1 :(得分:0)
实际上我希望获得前3名最高分,所以我的解决方案是:
@top_score_cards = Score.order("points DESC, updated_at").where("points != ? And activity_id= ? ",0,params[:@myActivity]).limit(3)