3

我有一个 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

我正在将 Datamapper 与 Sinatra 一起使用。上表模型名称为“mytbl”。与上述查询等效的数据映射器是什么?

4

1 回答 1

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) 作为列名。这没什么大不了的;)

于 2012-10-18T21:51:15.670 回答