ActiveRecord查询帮助。查找每个组的最新记录

时间:2017-04-28 22:10:37

标签: activerecord

所以我有一个看起来像这样的订单表:

enter image description here

其中ledger_id是一个uuid,版本是时间戳。

ledger_id个订单可能很多。这是一个非规范化的表btw,用于通过处理FWIW来跟踪订单及其进展。

如果有几个ledger_ids进来,我们想要每个ledger_id的最新订单,那么ActiveRecord查询会给我们带来什么?

我觉得我很亲近。我有这个:

orders = Order.where(ledger_id: ledger_ids).group(:ledger_id, :id).having('version = MIN(version)').first

其中ledger_ids是一个包含1个或多个分类帐uuids的数组。

但这给了我们一个错误:

:StatementInvalid: PG::GroupingError: ERROR:  column "orders.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT  "orders".* FROM "orders" WHERE "orders"."ledger_id" ...
                ^
: SELECT  "orders".* FROM "orders" WHERE "orders"."ledger_id" = $1 GROUP BY "orders"."ledger_id" ORDER BY "orders"."id" ASC LIMIT $2

有人知道解决方案吗?

0 个答案:

没有答案