我已经看到了几个答案,但找不到任何可以帮助我的东西
我的模型有country
列和city
列。
执行一些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")
仍然会出现同样的错误
答案 0 :(得分:4)
您应该在分组前选择
Model.where("name LIKE ?", "%#{query}%")
.select("country, city")
.group("country, city")
答案 1 :(得分:0)
如果您仍然遇到麻烦:
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