我正在使用 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()
参考自:https://docs.sqlalchemy.org/en/14/orm/queryguide.html#orm-queryguide-unions
使用 UNION 将两个表连接为子查询。
使用 SELECT * FROM 子查询。
对查询后的结果进行排序。
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()