I have this query which works correctly in MySQL. More background on it here.
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;
I tried running it in PostgreSQL, and it failed with this error message.
PGError: ERROR: column "c.name" must
appear in the GROUP BY clause or be
used in an aggregate function
I wasn't sure what this meant, so I tried changing "c.id" to "c.name" in the group by clause (both work in MySQL the same, assuming the name of an item is unique).
However this just produced another similar error
PGError: ERROR: column "c.id" must
appear in the GROUP BY clause or be
used in an aggregate function
How can this problem be resolved?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…