在一個控制器中,我有一個用sub select進行計數的活動查詢,並且希望使用count來進一步限制返回的行。如評論= 0Mysql2 ::錯誤:在'having子句'中的未知列'註釋'
我使用的是因爲這是我可以得到這個工作在MySQL提示符來測試它的唯一方法。檢查where子句中的聚合函數不起作用。
任何想法?
最終,我的目標是將此調整爲一個銷燬語句以刪除符合該條件的值,但我甚至不知道如何去做。所以這意味着只刪除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工作。但不想使用它。而是做積極的記錄。從選項b中選擇b.short_name,h.create_date,h.id,(從clickcomments c中選擇count(*),其中c.click_id = h.id)作爲commentcount,hbookmarks h其中b.user_id =#{ current_user.id}和h.bookmark_id = b.id和h.create_date
kram1021
對不起,替換commentcount的評論,更清晰 – kram1021
有人清理了代碼,但有一個調試線,我會解釋很重要。 'logger.info(「清除大小沒有評論:」+ @ topurge.size.to_s)' – kram1021