通过活动记录查询在组中的最大值

时间:2011-06-24 13:15:27

标签: ruby-on-rails ruby-on-rails-3 activerecord max

我有一个具有两个属性的模型(我只显示两个属性,因为只需要这两个列)

为MyModel


place_id ------------------------ user_id

1 ---------------------------------- 1

1 ---------------------------------- 2

1 ---------------------------------- 2

3 ---------------------------------- 3

3 ---------------------------------- 2

3 ---------------------------------- 3

3 ---------------------------------- 1

我想通过最大记录获取组。基本上我想要获取用户具有最大记录的特定地点,例如for place_id 1用户2具有最大结果,而地点3用户3具有最大结果。

1 个答案:

答案 0 :(得分:5)

如果您先指定地点,则可以执行以下操作:

MyModel.where("place_id=?",place_id).
        group("place_id,user_id").order("count(user_id) DESC").first

如果要一次获得所有最大值,则删除where子句并遍历结果集,仅为每个不同的place_id获取第一条记录。或者您可以在上面的语句中添加不同的内容。像这样的东西?

MyModel.select("DISTINCT(place_id)").
        merge(MyModel.group("place_id,user_id").order("count(user_id) DESC"))
祝你好运!