我有以下样本表和一个状态字段。
Name | status
-------------
Ab | 2
Xy | 0
Pq | 3
Rs | 1
我想执行查询,并希望以这种方式排序。
Name | status
-------------
Rs | 1
Ab | 2
Pq | 3
Xy | 0
可以在MySql查询中使用吗?
注意:此处status
字段为ENUM
。
答案 0 :(得分:3)
您可以按status
排序,但在第一顺序条件下将0
放在最后。
在MySQL中你可以这样做(因为布尔结果被评估为1
和0
)
select * from your_table
order by status = 0,
status
在其他数据库引擎中,您可以使用
select * from your_table
order by case when status <> 0 then 1 else 2 end,
status
答案 1 :(得分:2)
您也可以尝试
order by find_in_set(`status`, '1,2,3,0');
答案 2 :(得分:1)
我有四个解决方案: -
SELECT * FROM b ORDER BY FIELD(状态,3,0);
SELECT * FROM b ORDER BY find_in_set(
status
,'1,2,3,0');SELECT * FROM b ORDER BY status = 0,status;
SELECT * FROM b ORDER BY CASE WHEN status&lt;&gt; 0那么1节2结束, 状态;
答案 3 :(得分:0)
以下是用于按ASC或DESC顺序对数据进行排序的MySQL查询
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC