我需要生成类似以下查询语句的查询:
(select * from ... where .. and .. order by .. limit ..)
union all
(select * from ... where .. and .. order by .. limit ..)
order by ..
使用SQLAlchemy,我创建两个查询对象如下所示:
q1 = Session.query(..).filter(..).filter(..).order_by(..).limit(..)
q2 = Session.query(..).filter(..).filter(..).order_by(..).limit(..)
q = q1.union_all(q2).order_by(..).all()
然而它不起作用是因为SQLAlchemy生成的查询语句q1和q2没有放在括号内,这将导致错误。如何使得q1和q2的语句在联合后放在括号内以满足上述查询条件呢?
.subquery()
返回一个别名对象,它没有union_all
方法,所以我们必须使用.select_from()
代替,并结合使用union_all
函数。 - Martijn Pietersselect_from
更改为select_entity_from
。不确定为什么我的情况不同。 - Greg Ennisselect_entity_from()
方法。 - Martijn Pieters