我有以下Active Record模型:
class Group < ApplicationRecord
has_many :group_users
end
class GroupUser < ApplicationRecord
belongs_to :group
end
我正在使用 PostgreSQL 作为 RDBMS 和 Rails 5.1.1 。我想要检索具有10
的第一个group_users
组,随机排序。我也不想要任何重复项(假设group
有很多group users
)可能存在重复项。但是,以下查询不起作用,并且它的行为类似于distinct
根本不存在:
Group.joins(:group_users).order("RANDOM()").select("groups.uid, RANDOM()").limit(10).distinct
答案 0 :(得分:1)
那是因为你选择了RANDOM()
。从select
子句中删除它。
或者,试试这个:
Group.where(id: GroupUser.select(:group_id)).select(:uid).order("RANDOM()").limit(10)