我想通过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";
我有错误:
错误:列" Table.updatedAt"必须出现在GROUP BY子句中 用于聚合函数
答案 0 :(得分:1)
ID是唯一的,group by ID
就像普通选择一样。
列createdAt
不是唯一的,必须对具有相同createdAt
值的结果进行分组。您应该提供一种如何对它们进行分组的方法 - 使用aggreagete函数,将它们从select
子句中删除或将它们添加到group by
语句中。
答案 1 :(得分:0)
您只能选择聚合函数或" GROUP BY"中列出的字段。如告诉
ERROR: column "Table.updatedAt" must appear in the GROUP BY clause or be used in an aggregate function
您的第一个查询仅适用于" id"是您的主键,因此可以保证每个组只有一行。