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”)
。仍然给出相同的错误