我有两张桌子:
table A
id | values
和
table B
id | foreign key to A | datestamp | val2
鉴于id
的{{1}}列表,我如何得到A
和A
的加入结果,只包含来自B
的行每个匹配的B
最早datestamp
。
例如表B可以有:
A
我只对行
感兴趣1 | 2 | 1/10/2015
1 | 2 | 1/2/2015
1 | 2 | 1/3/2015
根据我在SQL中的理解,您可以执行类似
的操作id_A | id_B | 1/2/2015 | values | val2
但是,如何在SQLAlchemy查询中嵌入此选择?
例如,我相信我不能只使用
where timestamp = (select min(timestamp) from B.X where x.id = b.id)
答案 0 :(得分:3)
实际上,你可以使用:
B2 = aliased(B, name='b2')
s = session.query(func.min(B2.datestamp)).filter(B2.a_id == A.id)
q = (session
.query(A.id, B.id, B.datestamp, A.values, B.val2)
.join(B)
.filter(B.datestamp == s)
)