如何在 SQLAlchemy 中将 order_by 与 UNION 一起使用

问题描述 投票:0回答:1

我正在使用 SQLAlchemy UNION,ORDER_BY 不起作用,它抛出这个 错误

无法解析 ORDER BY/GROUP BY/DISTINCT 等的标签引用。文本 SQL 表达式“LastName”应显式声明为 text('LastName')

query1 = db.query(Employee.LastName).filter(Employee.Age == 30)
query2 = db.query(Employee.LastName).filter(Employee.Salary > 25000)
result = query1.union(query2).order_by('LastName').all()

然后我也尝试了下面的行,但它不起作用,它抛出了这个错误

(pyodbc.ProgrammingError)('42S22',"[42S22][Microsoft][SQL Server 的 ODBC 驱动程序 17][SQL Server] 列名“LastName”无效。[SQL Server] 无法准备语句.(8180)

result = query1.union(query2).order_by(text('LastName').all()
sql-server sqlalchemy sql-order-by union
1个回答
0
投票

参考自:https://docs.sqlalchemy.org/en/14/orm/queryguide.html#orm-queryguide-unions

  1. 使用 UNION 将两个表连接为子查询。

  2. 使用 SELECT * FROM 子查询。

  3. 对查询后的结果进行排序。

    smtm = 联合(表1,表2) subq = smtm.subquery() smtm = select(subq).order_by(desc(subq.c.order_date)) res = session.execute(smtm.limit(size).offset((page - 1) * size)).all()

© www.soinside.com 2019 - 2024. All rights reserved.