我有一个简单的课程:
class Foo
include DataMapper::Resource
property :id, Serial
property :bar, Text, lazy: false
property :created_on, DateTime, default: lambda { |r,p| DateTime.now }
end
我想选择它们,按栏分组并按max(created_on)排序。我需要的SQL是:
SELECT "bar" FROM "foo" GROUP BY "bar" ORDER BY MAX("created_on") DESC
但我不知道如何使用DataMapper。
我尝试过类似的事情:
Foo.all(fields: [:bar], unique: true, order: [:created_on.desc.max])
但你不能像那样使用max。我找不到怎么做。
你能帮忙吗?
答案 0 :(得分:1)
似乎没有必要使用max aggregate。通过按created_on列的降序排序,它将找到MAX并从那里开始。
你可能会逃脱:
Foo.all(fields: [:bar], unique: true, order: [created_on.desc])
不按顺序使用.max。
这与:
相同SELECT "bar" FROM "foo" GROUP BY "bar" ORDER BY "created_on" DESC
希望这有效。