我想使用SQLAlchemy构建此查询:
select * from t order by
case
when t.x!=0 then t.y
when t.x==0 then 0
end desc;
我尝试了以下方法:
db.session.query(t).order_by(
db.func.desc(
db.func.case([
(t.x!=0, t.y),
(t.x==0, 0)
]
)
)
但是它引发了一个ProgrammingError 'You have an error in your SQL syntax'
。我怎样才能用SQLAlchemy编写这个case语句呢?
2条答案
按热度按时间3wabscal1#
case
不是函数,它存在于db
示例中。您可以指定else
子句,而不是第二个when
子句。您可以只对表达式调用.desc()
,而不是用desc()
Package 它。查询应如下所示:tf7tbtn22#
case
函数不是db.func.case
,它是sqlalchemy.sql.expression.case
。