'having子句'中的未知列:

时间:2017-03-07 09:51:05

标签: mysql ruby-on-rails ruby rails-activerecord

我正在开展一个项目,我有很多用户,而且用户有很多帖子。我正在尝试让帖子计数超过某个阈值的用户,但我正在使用的查询似乎不起作用。

User.where(id: user_ids)
       .where(has_posts: true)
       .joins(:posts)
       .group('users.id')
       .having('COUNT(posts.id) >= user.post_threshold')

但是通过此查询,我得到Unknown column posts.id in 'having clause':

如何解决这个问题的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你可以使用posts.*表示法,至少在Postgres中,不了解mysql。

User.where(id: user_ids)
 .where(has_posts: true)
 .joins(:posts)
 .group(:id)
 .having('COUNT(posts.*) >= users.post_threshold')

答案 1 :(得分:0)

你不需要having,一个简单的where会很好地为你服务:

User.
  where(id: user_ids).
  where(has_posts: true).
  where('COUNT(posts.id) >= users.post_threshold').
  joins(:posts).
  group('users.id')

编辑:在某些数据库中,您可能需要在聚合中包含聚合,将此行添加到链中:

.select('*, COUNT(posts.id)')