2

查询每个 user_id 的最新课程计划记录的 Rails 方法是什么?

class LessonPlan < ActiveRecord::Base
    belongs_to :user
end

我见过的所有帖子都包括连接或子查询。没有简单的方法可以做到这一点吗?

我试过了

LessonPlan.select(['distinct(user_id)', :id, :created_at]).where(:user_id => users).order('created_at DESC') 

这会产生类似的查询。

SELECT distinct(user_id), id, created_at FROM `lesson_plans` WHERE `lesson_plans`.`user_id` IN (110031, 110032, 110033, 110034) ORDER BY created_at DESC

但是当我尝试这个查询时,它会返回具有重复 user_id 的行。

抱歉,如果这是一个重复的问题,我真的四处寻找解决方案。

4

2 回答 2

3

Rails#ActiveRecord:

LessonPlan.select([:user_id, :id, 'MAX(created_at)']).group(:user_id).limit(10)

mysql:

select id, user_id, MAX(created_at) from lesson_plans group by user_id limit 10
于 2012-04-04T07:54:13.783 回答
0

可能是它的工作

LessonPlan.select([:user_id, :id, 'MAX(created_at)']).group(:user_id)
于 2012-04-04T07:35:15.413 回答