Ruby on rails 使用ActiveRecord和Postgres分组

Ruby on rails 使用ActiveRecord和Postgres分组,ruby-on-rails,postgresql,activerecord,group-by,Ruby On Rails,Postgresql,Activerecord,Group By,我已经看到了几个答案,但找不到任何对我有帮助的 我有一个模型,它有一个国家列和一个城市列 在执行一些SQL查询时,我想向该查询中添加一个按第一个国家分组的查询,并为每个国家添加一个按城市分组的查询 Model.where("name LIKE ?", "%#{query}%").group(["country", "city"]) 但我明白了 PG::GroupingError: ERROR: column "models.id" must appear in the GROUP BY cl

我已经看到了几个答案,但找不到任何对我有帮助的

我有一个模型,它有一个
国家
列和一个
城市

在执行一些SQL查询时,我想向该查询中添加一个按第一个国家分组的查询,并为每个国家添加一个按城市分组的查询

Model.where("name LIKE ?", "%#{query}%").group(["country", "city"])
但我明白了

PG::GroupingError: ERROR:  column "models.id" must appear in the GROUP BY clause or be used in an aggregate function
我不知道该怎么办,因为我不想按ID分组,只想按国家和城市分组

我肯定我错过了什么,不知道是什么

使用字段,如建议的那样

 Model.where("name LIKE ?", "%#{query}%").group("country, city").select("country, city")

仍然会出现相同的错误

分组前应选择

Model.where("name LIKE ?", "%#{query}%")
     .select("country, city")
     .group("country, city")

如果您在以下方面仍有问题:

Model.where("name LIKE ?", "%#{query}%").group("country, city").select("country, city")
我想您已经定义了一个默认范围,您必须这样做:

Model.unscoped.where("name LIKE ?", "%#{query}%").group("country, city").select("country, city")
编辑:

如果不起作用,您可以执行此操作并发布输出:

Model.where("name LIKE ?", "%#{query}%").group(["country", "city"]).to_sql

错误是说——你应该做什么。试试这个
Model.where(“name LIKE?”,“%#{query}%”)。组(“country,city”)。选择(“name,city”)
。虽然您将使用
groupby
,但在任何数据库中,您必须在
groupby
子句中使用您在
select
子句中使用的列。即使使用
Model.where(“name LIKE?”,“%#{query}%”)。组([“country”,“city]”)。选择(“id”)
,您会看到,我在
select
方法中输入的内容。对不起,输入错误。。它将是
select(“country,city”)
而不是
select(“name,city”)
。仍然给出相同的错误