我在这里找到了一些主题,但仍然找不到适合我的查询的设置.

这是一个在本地主机上运行良好的查询:

@cars = Car.find_by_sql('SELECT cars.*, COUNT(cars.id) AS counter 
                         FROM cars 
                         LEFT JOIN users ON cars.id=users.car_id 
                         GROUP BY cars.id ORDER BY counter DESC')

但在Heroku上,误差大于-GROUP BY clause or be used in an aggregate function.

然后我在某个地方读到,我应该指定表中的所有列,所以我try 了以下方法:

@cars = Car.find_by_sql('SELECT cars.id, cars.name, cars.created_at, 
                                cars.updated_at, COUNT(cars.id) AS counter 
                         FROM cars 
                         LEFT JOIN users ON cars.id=users.car_id 
                         GROUP BY (cars.id, cars.name, cars.created_at, cars.updated_at) 
                         ORDER BY counter DESC')

但这在本地主机和Heroku上都不起作用...

查询的正确配置应该是什么?

推荐答案

我认为你是在试图在同一列上进行聚合和分组.这取决于你想要什么数据.你可以这样做:

SELECT 
 cars.name, 
 cars.created_at, 
 cars.updated_at, 
 COUNT(cars.id) AS counter 
FROM cars 
LEFT JOIN users 
  ON cars.id=users.car_id 
GROUP BY cars.name, cars.created_at, cars.updated_at 
ORDER BY counter DESC

或者你想数一数?然后像这样:

SELECT
 cars.id,
 cars.name, 
 cars.created_at, 
 cars.updated_at, 
 COUNT(*) AS counter 
FROM cars 
LEFT JOIN users 
  ON cars.id=users.car_id 
GROUP BY cars.id, cars.name, cars.created_at, cars.updated_at 
ORDER BY counter DESC

Postgresql相关问答推荐

Redis作为postgreSQL嵌套数据的缓存

为什么Postgres在打印时能完全缩短时间跨度?

无法使用PGx连接到Postgres数据库AWS RDS

无法在kubernetes中设置postgres复制

PostgreSQL 中的 Datum 数据类型是什么以及它的用途是什么?

对 Postgres 进行身份验证时如何使用自定义密码哈希算法?

Windows上的psql:错误:编码UTF8的字节序列无效:0xc8 0x20

PostgreSQL:如何避免被零除?

postgres 的密码

如何在可选参数上查询 postgres?

?(问号)运算符在 Rails 中查询 Postgresql JSONB 类型

如何创建 postgres 数据库模式的 sql 脚本?

安装时 postgres 的默认用户

如何在带有 PostgreSQL 数据库的 Web 应用程序中拥有完整的离线功能?

根据 Helm 图表设置值

Postgres 中有多少表分区太多了?

如何在postgresql中编写关于最大行数的约束?

使用 Spring、Hibernate 和 C3P0 管理多租户 Web 应用程序中的连接池

在 postgres 中导出为 CSV 并使用 GZIP 压缩

错误:索引表达式中的函数必须在 Postgres 中标记为 IMMUTABLE