MySQL | SQLAlchemy order by 按某字段指定顺序排序

在mysql order by排序中,大多数情况下仅使用默认排序规则就够了:字符串按字典顺序,数字按大小等等。
可有时候,某个字段是有自身业务含义的,比如 有个字段type,值1、2、3可能分别表示早/中/晚,如果我想把中午信息靠前,这时候普通的升降序排列就无法实现了。

在sql语句中 field(column,value1,value2,value3,……) 可以按指定字段进行排序,

其中column代表要排序的列,value1…… 代表自定义的值的顺序:
order by field(type,2,3,1)就是按type值为2在前,3次之,1最后的顺序来排。
在SQL语句中,完全可以使用select * from test order by field(type, 2, 3, 1)

在orm的sqlalchemy中,可通过相应的语句session.query(test).order_by(func.field(test.type, 2, 3, 1))实现

参考文档
mysql自定义排序规则函数——field()
SQLAlchemy ORDER BY FIELD()

添加新评论