PGError:错误:列“inboxes.id”必须出现在GROUP BY子句中或用于聚合函数

时间:2011-11-20 21:16:13

标签: mysql group-by

我对MySQL数据库有以下查询:

SELECT inboxes.*
   , count(inboxes.conv) AS times
   , max(created_at) AS created_at
FROM `inboxes`
WHERE to_user = 2
   OR account_id = 2
GROUP BY conv
ORDER BY id DESC

此查询适用于我的localhost,但如果我将其部署到Heroku,我将收到此错误:

PGError: ERROR:  column "inboxes.id" must appear in the GROUP BY clause or
                 be used in an aggregate function

3 个答案:

答案 0 :(得分:2)

您需要指定要选择的GROUP BY中的所有字段,即:

SELECT inboxes.id, count(inboxes.conv) AS times, max(created_at) as created_at FROM的收件箱WHERE (to_user = 2 OR account_id = 2) GROUP BY inboxes.id, conv ORDER BY inboxes.id DESC

答案 1 :(得分:2)

为避免将来出现此类问题,请在本地安装postgres,并使用生产中使用的相同数据库开发应用程序。

答案 2 :(得分:1)

你应该摆脱inboxes.*。列出您需要获取的每个参数。

所有参数必须分组(GROUP BY)或与组函数(MAX等)一起使用。

我无法告诉你为什么它在你的localhost上工作。