ActiveRecord查询帮助。从每组中查找最新记录

ActiveRecord查询帮助。从每组中查找最新记录,activerecord,Activerecord,我有一个订单表,看起来像这样: 其中,分类帐id是uuid,版本是时间戳 每个分类帐id可能有许多订单。这是一个非规范化的表btw,用于通过处理FWIW跟踪订单及其进度 如果有两个分类帐id进来,我们需要每个分类帐id的最新订单,那么ActiveRecord查询会得到什么 我觉得我很接近。我有这个: orders=Order.where(分类账标识:分类账标识)。组(:分类账标识,:标识)。具有('version=MIN(version)')。首先 其中,ledger\u id是一个由1个或多

我有一个订单表,看起来像这样:

其中,分类帐id是uuid,版本是时间戳

每个分类帐id可能有许多订单。这是一个非规范化的表btw,用于通过处理FWIW跟踪订单及其进度

如果有两个分类帐id进来,我们需要每个
分类帐id
的最新订单,那么ActiveRecord查询会得到什么

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

orders=Order.where(分类账标识:分类账标识)。组(:分类账标识,:标识)。具有('version=MIN(version)')。首先

其中,
ledger\u id
是一个由1个或多个ledger uuid组成的数组

但这给了我们一个错误:

: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

有人知道解决方案吗?

是否剪切了错误的最后一行,该行显示了导致错误的实际sql查询?为什么那些。。。?把整个错误都写下来。我认为
顺序。选择(“在(分类帐id)*”)上有区别。顺序(“分类帐id,版本描述”)
有效,但我不知道为什么。那是干什么的?是这样吗?为什么我需要
订单
子句中的
分类帐id