如何在mysql查询中按特定顺序排序?

时间:2014-02-27 10:34:49

标签: php mysql

我有以下样本表和一个状态字段。

Name | status
-------------
Ab   | 2
Xy   | 0
Pq   | 3
Rs   | 1

我想执行查询,并希望以这种方式排序。

Name | status
-------------
Rs   | 1
Ab   | 2
Pq   | 3
Xy   | 0

可以在MySql查询中使用吗?

注意:此处status字段为ENUM

4 个答案:

答案 0 :(得分:3)

您可以按status排序,但在第一顺序条件下将0放在最后。

在MySQL中你可以这样做(因为布尔结果被评估为10

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