MySQL基于值的订单列

时间:2015-09-03 12:55:15

标签: mysql sql-order-by

我在表格中有多行,它们有statusedited列。状态值可以是0,1,2或3.以下是我的查询。

SELECT * FROM orders ORDER BY FIELD(status, 1, 0, 2, 3), edited ASC

是否可以根据状态值来订购结果:

if status = '0' => edited DESC
if status = '1' => edited DESC
if status = '2' => edited ASC
if status = '3' => edited ASC

我可以在一个查询中执行此操作,还是需要执行单独的查询? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您应该使用Order By Case查询

语法

 order By   
    CASE 
           WHEN status =0 THEN 0 
             ...

        END DESC 

答案 1 :(得分:0)

检查此查询以获取已排序的输出:

SELECT * FROM test ORDER BY FIELD(status,0,1)DESC,FIELD(status,2,3)ASC,ASC编辑

Reference for the script