【发布时间】:2014-07-02 21:38:29
【问题描述】:
以下查询在 MySQL 中运行良好(由 rails 生成):
SELECT
sum(up_votes) total_up_votes
FROM
"answers"
WHERE
"answers"."user_id" = 100
ORDER BY
"answers"."id" ASC
但它在 Postgres 中出现以下错误:
PG::GroupingError: ERROR: column "answers.id" must appear in the GROUP BY clause or be used in an aggregate function
编辑:更新了查询。这是执行此查询的 Rails 模型:
class User < MyModel
def top?
data = self.answers.select("sum(up_votes) total_up_votes").first
return (data.total_up_votes.present? && data.total_up_votes >= 10)
end
end
【问题讨论】:
-
也许有另一种方法告诉 rails 结果中只有一行,因此不要添加
order by? -
考虑到有多少 Rails 人使用 Postgres,我当然希望有办法。 MySQL 从来没有遇到过这个问题。
-
看起来你应该可以使用
self.answers.sum(...)或.calculate(...)对于这种情况:api.rubyonrails.org/classes/ActiveRecord/…(我不使用 Ruby on Rails,所以无法确认)
标签: mysql ruby-on-rails ruby-on-rails-3 postgresql ruby-on-rails-4