如何使用 Rails 在 PostgreSQL 中处理 GROUP BY?

发布于 2024-10-09 01:24:59 字数 499 浏览 1 评论 0原文

我有一个 Rails 3 应用程序,它保持高分。我将其托管在 Heroku 上,它使用 postgresql 作为数据库。

我需要从分数表中提取最高分。该表包含 scoreuser_id 列。它在 mysql 中使用以下代码:

Score.order('score DESC').group('user_id').limit(25)

这对每个用户的最高分数进行排名。

当我将应用程序放在 Heroku 上时,我收到以下 psql 错误 PGError: ERROR: column "scores.id" Must come in the GROUP BY Clause or be use in anaggregate function

我已经阅读过但还没有找到明确的答案。重新创建上述查询以与 PostgreSQL 一起使用的最佳方法是什么?

谢谢!

蒂姆

I have a Rails 3 app which keeps high scores. I'm hosting it on Heroku which uses postgresql as the db.

I need to extract the top scores from the scores table. The table has columns score and user_id. It was working in mysql with the following:

Score.order('score DESC').group('user_id').limit(25)

This ranks each user's top score.

When I put the app on Heroku, I get the following psql error PGError: ERROR: column "scores.id" must appear in the GROUP BY clause or be used in an aggregate function

I've read around but haven't found a clear answer. What is the most optimal way to recreate the above query to work with PostgreSQL?

Thanks!

Tim

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡淡的优雅 2024-10-16 01:24:59

这意味着您的选择查询正在选择“id”列,但不将其包含在 group by 子句中。我不熟悉 Rails,但它可以选择 * 或所有列吗?

That means your select query is selecting the "id" column but not including it in the group by clause. I'm not familiar with rails but could it be selecting * or all columns?

薄荷→糖丶微凉 2024-10-16 01:24:59

你能做吗

select id, max(score) group by id;

Could you do

select id, max(score) group by id;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文