我有一个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是什么?
答案 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)作为列名。这不是什么大不了的事;)