[英]SQLAlchemy Writing Nested Query
我有两张桌子:
table A
id | values
和
table B
id | foreign key to A | datestamp | val2
给定A
的id
列表,如何得到A
和B
的连接结果,只有B
中的行,每个匹配的A
具有最早的日期datestamp
。
例如,表B可以具有:
1 | 2 | 1/10/2015
1 | 2 | 1/2/2015
1 | 2 | 1/3/2015
我只对这行感兴趣
id_A | id_B | 1/2/2015 | values | val2
根据我在SQL中的理解,你可以做类似的事情
where timestamp = (select min(timestamp) from B.X where x.id = b.id)
但是,如何在SQLAlchemy查询中嵌入此选择?
例如,我相信我不能只使用
.filter(B.timestamp == (query(func.min(B.timestamp)).filter(A.id == B.foreign_key_to_A)))
实际上,你可以使用:
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)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.