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

Sinatra で Datamapper を使用しています。上記の表のモデル名は「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 に答える