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