所以我有一个看起来像这样的订单表:
其中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
有人知道解决方案吗?