所以我有一个标准的用户表格结构,带有主要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)
这有效,但可以全部检索。如何按要求限制查询?非常感谢你。
答案 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
它会给你预期的结果。