Hay*_*Pan 3 python sqlalchemy flask
我想使用SQLAlchemy构建此查询:
select * from t order by
case
when t.x!=0 then t.y
when t.x==0 then 0
end desc;
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
db.session.query(t).order_by(
db.func.desc(
db.func.case([
(t.x!=0, t.y),
(t.x==0, 0)
]
)
)
Run Code Online (Sandbox Code Playgroud)
但它提出了一个ProgrammingError 'You have an error in your SQL syntax'。如何在SQLAlchemy中编写此case语句?
case不是函数,并且存在于db实例中。您可以指定一个else子句,而不是第二个when。您可以仅调用.desc()表达式,而不必将其包装desc()。查询应如下所示:
db.session.query(t).order_by(db.case(((t.x != 0, t.y),), else_=0).desc())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1707 次 |
| 最近记录: |