在控制器中,我有一个带子选择的activequery以获取计数,并希望使用该计数进一步限制返回的行。例如,评论= 0

我使用的是hading,因为那是我可以在mysql提示符下对其进行测试的唯一方法。在where子句中检查聚合函数不起作用。

有任何想法吗?

最终,我的目标是将其调整为destroy语句,以删除满足该条件的值,但我什至不知道该怎么做。因此,这意味着仅从hbookmarks表(而不是书签表)中删除行。

来自控制器的代码:

Hbookmark.joins("INNER JOIN bookmarks ON hbookmarks.bookmark_id = bookmarks.id")
         .select("bookmarks.short_name, hbookmarks.id, ( select count(*) from clickcomments where clickcomments.click_id = hbookmarks.id ) as comments")
         .where("bookmarks.user_id = ? AND hbookmarks.create_date < DATE_SUB(NOW(), INTERVAL 1 YEAR )", current_user.id)
         .having("comments = 0")
         .order("hbookmarks.create_date desc")

最佳答案

之前我也遇到过类似的问题,我通过用用于定义它的实际SQL段替换了comments来解决了这个问题:

having("( select count(*) from clickcomments where clickcomments.click_id = hbookmarks.id ) = 0")

10-06 01:30