在rails查询中限制PER用户

时间:2015-08-21 12:43:48

标签: ruby-on-rails

所以我有一个标准的用户表格结构,带有主要ID密钥,以及以下角色表:

 user_id | persona_id | time_inserted
 2              1             x
 2              2             x+1
 2              3             x+2
 1              1             x+3
 5              8             x+6
 5              9             x+1

我要做的是检索最后插入行,并将每个用户ID限制为 ONE 。因此,在该查询中,我想要的结果是:

[2,3]因为最后插入2是persona_id 3(x + 2),[1,1]和[5,8],因为最后插入5是persona_id 8(x + 6)< / p>

这是我的疑问:

to_return = Persona.select(to_get).where(to_condition)

这有效,但可以全部检索。如何按要求限制查询?非常感谢你。

1 个答案:

答案 0 :(得分:2)

这应该有效:

to_return = Persona.select(to_get).where(to_condition).group('user_id').having('time_inserted = MAX(time_inserted)')

更新

如果不在group子句中添加列,则无法选择列。 由于您只想按user_id进行分组,一种可能的解决方案是,首先选择最大user_id的{​​{1}},如下所示:

time_inserted

然后,根据条件将其与users_ids_relation = Persona.select('user_id').group('user_id').having('time_inserted = MAX(time_inserted)') 表连接,然后选择所需的列:

personas

它会给你预期的结果。