我遇到了一些我不知道如何处理活动记录(实际上我不能确切地说如何使用sql),我想这样做。我想根据某个领域的最高价值以及其他一些标准来选择记录。下面是一些假的东西,这解释了我的情况。鉴于以下记录:with activerecord我如何根据字段的最高值选择记录?
id:1 | name:recipe1 | saved:true | revision:1
id:2 | name:recipe1 | saved:false | revision:2
id:3 | name:recipe1 | saved:true | revision:3
id:4 | name:recipe1 | saved:false | revision:4
id:5 | name:recipe2 | saved:true | revision:1
id:6 | name:recipe2 | saved:true | revision:2
id:7 | name:recipe3 | saved:false | revision:1
id:8 | name:recipe4 | saved:true | revision:1
我希望能够获得最高版本号的记录已被保存。这将意味着记录与ID:3,6和8
我的第一本能是做某种类型的子查询,在修订或某事上获得一个MAX。除此之外,我真的不知道如何去做,所以任何帮助将不胜感激。
编辑:
这是做什么,我想要的SQL:
SELECT id, name, MAX(revision) as "revision" FROM revisions WHERE saved = 1 GROUP BY name
现在,有任何合理的方式与ActiveRecord的做到这一点?
此函数返回的ID和最高版本(如:{33 => 4}),它几乎存在,但有什么办法让它要返回记录? – re5et 2010-11-19 07:41:13
Revision.find(:all,:select =>“id,name,max(revision)as revision”,:conditions => [“saved = 1”],:group =>'name') – Rakesh 2010-11-19 07:48:30
完全工作= ) – re5et 2010-11-19 08:16:54