1

我在模型 Organizer 和 Event 之间有一对多的关系。

我想获取最近更新事件的五个组织者。

    Event.order('updated_at asc').
    where(organizer_id: [1,2,3,4,5,6,7,8,9]).
    select(:organizer_id).uniq.limit(5)

上面的代码在 SQLite3 中运行良好,但在 PostgreSQL 中的 Heroku 上抛出了以下错误:

for SELECT DISTINCT, ORDER BY expressions must appear in select list

如何使查询在 PG 中工作,例如使用错误消息中建议的方法?

如果可能的话,我希望有一个尽可能多的 ActiveRecord 的解决方案,而不是纯 SQL。

4

1 回答 1

3

您按 订购updated_at,但仅选择organizer_id。Postgres 要求 ORDER 子句中使用的字段位于 SELECT 子句中。您需要添加updated_at到您的select列表中。

在 SQL 中,现在你有:

SELECT organizer_id FROM events WHERE ... ORDER BY updated_at asc;

你需要:

SELECT organizer_id, updated_at FROM events WHERE ... ORDER BY updated_at asc;
于 2013-07-16T18:54:35.340 回答