我有一个推荐模型,我想选择所有不同的按照它们的movie_id列的建议。我已经试过了还没有工作的一些方法,但没有:Rails:选择特定列唯一的所有记录
scope :not_duplicate, -> {
group_by(&:movie_id)
}
==> doesn't work on a class
scope :not_duplicate, -> {
uniq_by(&:movie_id)
}
==> doesn't work on a class
scope :not_duplicate, -> {
select(:movie_id).group(:movie_id, "recommendations.id")
}
==> only returns movie_id values and I need entire record
scope :not_duplicate, -> {
select("recommendations.*").group(:movie_id)
}
==> PG::GroupingError: ERROR: column "recommendations.id" must appear in the GROUP BY clause or be used in an aggregate function
我敢肯定,这是一个很经常发生,但由于某种原因,我无法找到解决方案。有任何想法吗?
你需要弄清楚你要寻找的更多。你只想要每部电影的第一个建议?如果是,请尝试'Recommendation.joins(“JOIN(SELECT MIN(id)as first_id FROM recommendations GROUP BY movie_id)t ON t.first_id = recommendations.id”)'。 –