Moh*_*ain 3 activerecord ruby-on-rails max ruby-on-rails-3
我有一个具有两个属性的模型(我只显示两个属性,因为只需要这两个列)
为MyModel
place_id ------------------------ user_id
1 ---------------------------------- 1
1 ---------------------------------- 2
1 ---------------------------------- 2
3 ---------------------------------- 3
3 ---------------------------------- 2
3 ---------------------------------- 3
3 ---------------------------------- 1
我想通过最大记录来获取组.基本上我想要获取用户具有最大记录的特定位置,例如对于place_id 1,用户2具有最大结果,而对于地点3,用户3具有最大结果.
如果您先指定一个地方,您可以这样做:
MyModel.where("place_id=?",place_id).
group("place_id,user_id").order("count(user_id) DESC").first
Run Code Online (Sandbox Code Playgroud)
如果要一次获得所有最大值,则删除where子句并遍历结果集,仅为每个不同的place_id获取第一条记录.或者您可以在上面的语句中添加不同的内容.像这样的东西?
MyModel.select("DISTINCT(place_id)").
merge(MyModel.group("place_id,user_id").order("count(user_id) DESC"))
Run Code Online (Sandbox Code Playgroud)
祝好运!