MySQL 根据值对列进行排序

MySQL order columns based on value

我在 table 中有多行,它们有 statusedited 列。 status 的值可以是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

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

您应该使用 Order By Case 查询

语法

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

        END DESC 

也检查此查询以获得排序的输出:

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

Reference for the script