为了账号安全,请及时绑定邮箱和手机立即绑定

PostgreSQL-必须出现在GROUP BY子句中或在聚合函数中使用

PostgreSQL-必须出现在GROUP BY子句中或在聚合函数中使用

慕仙森 2019-12-03 16:12:54
我在pg生产模式下遇到此错误,但在sqlite3开发模式下工作正常。 ActiveRecord::StatementInvalid in ManagementController#indexPG::Error: ERROR:  column "estates.id" must appear in the GROUP BY clause or be used in an aggregate functionLINE 1: SELECT "estates".* FROM "estates"  WHERE "estates"."Mgmt" = ...               ^: SELECT "estates".* FROM "estates"  WHERE "estates"."Mgmt" = 'Mazzey' GROUP BY user_id@myestate = Estate.where(:Mgmt => current_user.Company).group(:user_id).all
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我最近从MySQL迁移到PostgreSQL,并遇到了相同的问题。仅供参考,我发现的最佳方法是按照此SO答案中的建议使用DISTINCT ON:


Ruby on Rails / ActiveRecord的优雅PostgreSQL Group by


这将使您为所选列中与其他查询条件匹配的每个唯一值获得一条记录:


MyModel.where(:some_col => value).select("DISTINCT ON (unique_col) *") 

我更喜欢DISTINCT ON,因为我仍然可以获取行中的所有其他列值。仅DISTINCT只会返回该特定列的值。


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 1888 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信