错误:专栏" engagements.id"必须出现在GROUP BY子句中或用于聚合函数

时间:2016-05-19 14:25:40

标签: ruby-on-rails ruby postgresql ruby-on-rails-4

我有以下查询可行

@engagements = Engagement.includes(:participation).where(influencer_authorization_id: current_influencer.id).group_by { |p| p.status }

我正在尝试使用Database函数而不是Ruby / Rails函数进行分组,以下是我的代码

engagements = Engagement.where(influencer_authorization_id: current_influencer.id).group("status")

但是我收到以下错误

  

错误:专栏" engagements.id"必须出现在GROUP BY子句中或用于聚合函数   第1行:选择"约定"。* FROM"约定"在哪里"订婚......                  ^

更新

我尝试过以下但仍然无法正常工作

engagements = Engagement.select("engagements.*").where(influencer_authorization_id: current_influencer.id).group("engagement.status")

错误

  

错误:缺少表格的#FROM子句条目"参与"   第1行:...... ents"。" influencer_authorization_id" = $ 1 GROUP BY订婚......                                                                ^

1 个答案:

答案 0 :(得分:1)

你使用postgres吗? 问题是数据库无法确定要显示的内容,例如' ID'栏目的状态'几个记录是一样的。您可以手动编写select语句并使用聚合函数。 我认为此PostgreSQL -must appear in the GROUP BY clause or be used in an aggregate function和此GroupingError: ERROR: column must appear in the GROUP BY clause or be used in an aggregate function是相关的