数据模拟(table)
gmt_create | name | state(0:处理中,1:已完成,2:已拒绝,3:已中止) |
---|
2023-10-18 07:27:35 | 小明 | 0 |
2023-10-19 08:24:53 | 小红 | 1 |
2023-10-20 09:12:14 | 小兰 | 3 |
2023-10-21 10:16:28 | 小刚 | 2 |
2023-10-22 08:14:13 | 小强 | 0 |
2023-10-23 09:54:57 | 小绿 | 1 |
2023-10-24 07:33:43 | 小李 | 2 |
目标
查询列表把 处理中的数据 放到最前面,之后再按 创建时间大到小 排序,效果图如下
gmt_create | name | state(0:处理中,1:已完成,2:已拒绝,3:已中止) |
---|
2023-10-22 08:14:13 | 小强 | 0 |
2023-10-18 07:27:35 | 小明 | 0 |
2023-10-24 07:33:43 | 小李 | 2 |
2023-10-23 09:54:57 | 小绿 | 1 |
2023-10-21 10:16:28 | 小刚 | 2 |
2023-10-20 09:12:14 | 小兰 | 3 |
2023-10-19 08:24:53 | 小红 | 1 |
SQL 编写
SELECT *
FROM table
ORDER BY (CASE WHEN state = 0 THEN 1 ELSE 2 END), gmt_create DESC
参考
mysql 某列指定值靠前排序:order by 高级用法之 case when