mysql - mysql 状态排序子句

标签 mysql sql

我正在对表格进行排序,以先显示状态为 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/

相关文章:

带案例的 Mysql 数据透视表

sql server 2008 如何断开每个人与我的数据库的连接?

php - 查找不止一次存在的数字

mysql - 在不选择表的情况下填充mysql中的行数的方法

mysql - 查询结果的where子句

mysql - 将数据框中的一行数据直接插入到 R 中的数据库中

mysql - 外键错误: MySQL ERROR 1005 (HY000): Can't create table

php - mysql_fetch_array 的几个 while 语句导致意外错误

sql - Nvarchar 值在没有 int 列的情况下溢出 int 列?

sql - Pentaho CDE在Impala上进行参数化查询