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

标签 python sql sqlite sqlalchemy union

this question 中所述,您可以使用字符串文字在 union 中执行 order by

例如,这适用于 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

如何并集的结果排序?

最佳答案

属于联合查询一部分的查询不得排序。

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

SELECT * FROM (SELECT ... LIMIT ...)
UNION ALL
SELECT * FROM (SELECT ... LIMIT ...)
q1 = select(...).limit(...).subquery()
q2 = select(...).limit(...).subquery()
query = q1.union_all(q2)...

关于python - 在 SqlAlchemy SQLite 中按联合查询中的列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21777730/

相关文章:

python - 在 Linux Mint 中使用启动器和基本代码启动 Jupyter Notebook

mysql - 当所有 child 都满足某些标准时更新 parent ?

entity-framework - SQLite 和 Entity Framework 6 如何结合

sql - 如何使用 ADODB 在一次执行中返回多个记录集?

c# - 如何有效地从庞大的数据集中提取每一项的计数?

bash - 如何在bash脚本中运行sqlite3?

python - Apache django 以及静态和媒体文件服务

python - 如何在python中更改numpy.random.rand数组的数据类型?

python - "Pythonic"/将多个变量设置为同一函数调用或列表理解的更优雅的方法

mysql - 未回复的消息 - MYSQL