我有一个在MySQL中正常工作的查询。更多关于它的背景信息可以在这里找到。
SELECT c.*, SUM(ABS(v.vote)) AS score
FROM categories c,items i, votes v
WHERE c.id = i.category_id
AND i.id = v.voteable_id
AND v.created_at > '#{1.week.ago}'
GROUP BY c.id
ORDER BY score DESC LIMIT 8;
我尝试在PostgreSQL中运行它,但遇到了这个错误消息:
PGError: 错误:列"c.name"必须出现在GROUP BY子句中或用于聚合函数
我不确定这意味着什么,所以我尝试将"group by"子句中的"c.id"更改为"c.name"(假设物品名称唯一,则两者在MySQL中都能正常工作)。
然而,这只是产生了另一个类似的错误:
PGError: 错误:列"c.id"必须出现在GROUP BY子句中或用于聚合函数
如何解决这个问题?