group by 在 postgreSQL 中不起作用

group by is not working in postgreSQL

我想按 createdAt 对我的数据进行分组,但它不起作用我不知道为什么... 只按id分组,对我没用

这是有效的:

SELECT "id", "createdAt", "updatedAt" 
FROM "tables" AS "Table" 
WHERE "Table"."createdAt" 
BETWEEN '2014-04-21 20:46:25.938-04' AND '2015-04-21 20:46:25.938-04'
GROUP BY "id";

这就是我想要的,但它根本不起作用...

SELECT "createdAt", "updatedAt" 
FROM "tables" AS "Table" 
WHERE "Table"."createdAt" 
BETWEEN '2014-04-21 20:46:25.938-04' AND '2015-04-21 20:46:25.938-04' 
GROUP BY "createdAt";

我有错误:

ERROR: column "Table.updatedAt" must appear in the GROUP BY clause or be used in an aggregate function

ID 是唯一的,group by ID 就像一个普通的 select。

createdAt 不是唯一的,具有相同 createdAt 值的结果必须分组。您应该提供一种将它们分组的方式 - 使用 aggreagete 函数,将它们从 select 子句中删除或将它们添加到 group by 语句中。

您只能select聚合函数或"GROUP BY"中列出的字段,如告知

ERROR: column "Table.updatedAt" must appear in the GROUP BY clause or be used in an aggregate function

您的第一个查询仅有效,因为 "id" 是您的主键,因此可以保证每个组只有一行。