我正在对表进行排序,以显示状态为 3 的记录,然后状态为 4,然后是 1。
在当前表中,这是输出
id status
1 3
2 4
3 4
4 3
5 1
Run Code Online (Sandbox Code Playgroud)
现在当我应用查询时
select * from table order by model.status desc
Run Code Online (Sandbox Code Playgroud)
输出是:
id status
2 4
3 4
1 3
4 3
5 1
Run Code Online (Sandbox Code Playgroud)
我想要的实际上是下面的输出。首先是状态 3,然后是状态 4,然后是状态 1。如何实现以下输出
id status
1 3
4 3
2 4
3 4
5 1
Run Code Online (Sandbox Code Playgroud)
您可以使用 ~0,而不是神奇的 9999999 数字,它代表 big int 的最大可能值...应该足够了;)
order by (case when status = 1 then ~0 else status end)
Run Code Online (Sandbox Code Playgroud)
其他解决方案,没有任何幻数
order by status = 1 , status
Run Code Online (Sandbox Code Playgroud)
首先按“布尔值”(数据库中的 0 或 1)排序,然后按状态排序