我正在对表格进行排序,以先显示状态为 3,然后状态为 4,然后是 1 的记录。
在当前表中这是输出
id status
1 3
2 4
3 4
4 3
5 1
现在当我应用查询时
select * from table order by model.status desc
输出是:
id status
2 4
3 4
1 3
4 3
5 1
我实际上想要的是下面的输出。首先是状态 3,然后是状态 4,然后是状态 1。如何实现以下输出
id status
1 3
4 3
2 4
3 4
5 1
最佳答案
您可以使用 ~0 代替神奇的 9999999 数字,它代表 big int 的最大可能值...应该足够了 ;)
order by (case when status = 1 then ~0 else status end)
其他解决方案,没有任何魔数(Magic Number)
order by status = 1 , status
这将首先按“ bool 值”(数据库中的 0 或 1)排序,然后按状态排序
关于mysql - mysql 状态排序子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766844/