如何在rails中使用带有DESC的2个字段的order by子句?

时间:2015-06-26 11:00:56

标签: mysql ruby-on-rails

我想要排行榜,但可能会发生多个用户的得分相同且得分最高的问题,所以我想选择一个达到该得分的人,所以我使用了以下查询,但它没有给我正确结果。
我在rails技术上使用ruby。

top_score_cards=Score.order("updated_at DESC,points DESC").uniq

2 个答案:

答案 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)