Ruby Datamapper group by with max

时间:2012-10-18 19:01:59

标签: ruby datamapper ruby-datamapper

我有一个MySQL表:

id       int
a        varchar
b        varchar
c        varchar
version  int
active   bool

我想通过a,b和c获取最大版本组,所以我有以下查询来执行此操作:

select a, b, c, max(version) as version from mytbl where active = 1 group by a, b, c

我在Sinatra上使用Datamapper。上表的型号名称为“mytbl”。 与上述查询等效的datamapper是什么?

1 个答案:

答案 0 :(得分:1)

我明白了:)

mytbl.aggregate(:version.max, :active => 1, :fields => [:a, :b, :c], :unique => true, :order => nil)

mytbl.aggregate(:version.max, :conditions => [ 'active = ?', 1], :fields => [:a, :b, :c], :unique => true, :order => nil)

但是我找不到将max(version)别名作为版本的方法。它返回max(version)作为列名。这不是什么大不了的事;)