小编典典

在SqlAlchemy SQLite中的联合查询中按列排序

sql

如本问题所述,您可以order byunionS中使用字符串文字。

例如,这适用于Oracle:

querypart1 = select([t1.c.col1.label("a")]).order_by(t1.c.col1).limit(limit)
querypart2 = select([t2.c.col2.label("a")]).order_by(t2.c.col2).limit(limit)
query = querypart1.union_all(querypart2).order_by("a").limit(limit)

order-by可以采用字符串文字,这是联合结果中列的名称。

(分区表中有成千上万的行,我正试图对那些该死的东西进行分页)

但是,当针对SQLite3运行时,这会生成一个异常:

sqlalchemy.exc.OperationalError: (OperationalError) near "ORDER": syntax error

您如何order by获得a的结果union


阅读 202

收藏
2021-04-14

共1个答案

小编典典

联合查询中的查询不能排序。

为了能够在复合查询中使用限制,必须将单个查询包装在单独的子查询中:

SELECT * FROM (SELECT ... LIMIT ...)
UNION ALL
SELECT * FROM (SELECT ... LIMIT ...)



q1 = select(...).limit(...).subquery()
q2 = select(...).limit(...).subquery()
query = q1.union_all(q2)...
2021-04-14