【问题标题】:PG::GroupingError: ERROR: column "events.id" must appear in the GROUP BY clause or be used in an aggregate functionPG::GroupingError: ERROR: column "events.id" 必须出现在 GROUP BY 子句中或在聚合函数中使用
【发布时间】:2017-02-28 04:43:43
【问题描述】:

一个事件有一个列popularity 和许多关键字。关键字具有类别和名称。我试图按事件的受欢迎程度对事件进行排序,但随后只返回每个关键字名称中最流行的事件,类别为“分类”。

这是我的查询:

Event
  .order(:popularity)
  .joins(:keywords)
  .where(keywords: {category: "taxonomy"})
  .group("keywords.name")

但我遇到以下错误:

PG::GroupingError: 错误:列“events.id”必须出现在 GROUP BY 子句或在聚合函数中使用

我哪里错了?

【问题讨论】:

  • Postgres 版本?有些人建议使用 9.1

标签: ruby-on-rails activerecord


【解决方案1】:
Event
  .order(:popularity)
  .joins(:keywords)
  .group('events.id') # <======
  .where(keywords: { category: 'taxonomy' })
  .group('keywords.name')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 2015-04-20
    • 2014-01-23
    • 2015-06-22
    • 1970-01-01
    • 2020-10-23
    • 2013-11-05
    相关资源
    最近更新 更多