SQLAlchemy中Union后关联org表获取org_name的连接问题
解决方案
将Union查询结果转为子查询
首先要把union_query转换成可用于关联的子查询对象,调用.subquery()方法即可:union_subquery = union_query.subquery()关联org表并指定连接条件
调用.join()时传入org表,通过onclause参数明确连接规则——匹配子查询与org表中的org_code和chart_code字段:join_query = db.query(union_subquery.c.chart_code, union_subquery.c.org_code, org.org_name)\ .join(org, (union_subquery.c.org_code == org.org_code) & (union_subquery.c.chart_code == org.chart_code))你可以根据实际需求调整查询返回的字段列表。
额外说明
- 如果业务逻辑中
org_code是唯一标识,也可以仅通过org_code关联,但同时匹配两个字段能避免数据歧义。 - 若要保留Union结果中所有记录(包括org表无匹配的项),可以用
.outerjoin()替代.join()实现左连接。
- 如果业务逻辑中
内容的提问来源于stack exchange,提问作者Quantico
相关产品推荐
相关产品推荐

