如何将SQL查询转换为Rails活动记录查询

时间:2016-01-28 10:44:35

标签: ruby-on-rails ruby

查询声明

select * from timetables where user_id IN
   (SELECT user_id FROM timetables GROUP BY user_id HAVING COUNT(*) > 1)

我不想使用find_by_sql。 因为find_by_sql返回数组。

我想使用(.where,.group,.having ......)

的混合物

帮帮我......

1 个答案:

答案 0 :(得分:1)

这种方法的问题在于,子查询的结果将由ruby解释,而不是由MySQL解释,从而大大降低了性能,但是在这里你去了:

Timetable.where(user_id: Timetable.group(:user_id)
                                  .having('count(*) > 1')
                                  .pluck(:user_id))
#⇒ Timetable::FriendlyIdActiveRecordRelation < ActiveRecord::Relation