您必須GROUP BY
您在Postgres中選擇的所有列,否則它會生氣。有沒有簡單/乾淨的方式來做到這一點,而不僅僅是列出所有的列?Rails Postgres集團所有專欄
我想出的最好的是以下(意圖被註釋掉):
# The purpose of this query is to return a list of `User`s
# ordered by the number of `Account`s they have in descending order.
User.joins(:accounts)
.group(User.full_column_names)
.order('COUNT("accounts".*) DESC')
從user.rb
:找到最賬戶的用戶
def self.full_column_names
column_names.collect {|name| "\"#{table_name}\".\"#{name}\"" }
end
你確定你清楚'activerecord組方法'的使用http://guides.rubyonrails.org/active_record_querying.html#group和'postgresql group by clause' http://www.postgresqltutorial.com/ PostgreSQL的基團通過/?按表格中的所有列分組是沒有意義的。 –
我正在用'accounts'表做'INNER JOIN'以找到賬號最多的用戶,所以我在'ORDER'子句中使用了一個聚合函數。 默認情況下,Rails會從AR模型中選擇所有的列,在這種情況下,'SELECT「用戶」。* ...'是我想要的,因爲我正在尋找完整的'User'對象。這是否更有意義?我可能錯過了一個更簡單的解決方案,這是迄今爲止我所提出的最好的解決方案。 – Aaron