繁体   English   中英

SQLAlchemy编写嵌套查询

[英]SQLAlchemy Writing Nested Query

我有两张桌子:

table A

id | values

table B

id | foreign key to A | datestamp | val2

给定Aid列表,如何得到AB的连接结果,只有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM