繁体   English   中英

'having子句'中的未知列:

[英]Unknown column in 'having clause':

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

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':获得了Unknown column posts.id in 'having clause':

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

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

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

你并不需要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)')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM