【问题标题】:Mysql: Reorder results based on multiple column values then dateMysql:根据多列值重新排序结果然后日期
【发布时间】:2018-09-27 03:03:57
【问题描述】:

这是我的表:

id | state   | orderid | name  | date
1  | Hold    | 121212  | Mike  | 2018-04-11
2  | Closed  | 121213  | Homer | 2018-04-12
3  | Open    | 121214  | Mike  | 2018-04-13
4  | Hold    | 121215  | Bart  | 2018-04-14
5  | Open    | 121216  | Lisa  | 2018-04-15
6  | Closed  | 121217  | Bart  | 2018-04-16
7  | Closed  | 121218  | Homer | 2018-04-17

我正在尝试按状态(打开、保持、关闭)排序,然后是日期 (ASC),如果状态是“关闭”,然后是日期 (DESC)。所以结果是这样的。

id | state   | orderid | name  | date
3  | Open    | 121214  | Mike  | 2018-04-13
5  | Open    | 121216  | Lisa  | 2018-04-15
1  | Hold    | 121212  | Mike  | 2018-04-11
4  | Hold    | 121215  | Bart  | 2018-04-14
7  | Closed  | 121218  | Homer | 2018-04-17
6  | Closed  | 121217  | Bart  | 2018-04-16
2  | Closed  | 121213  | Homer | 2018-04-12

这是我现在的查询:

SELECT * FROM mytable ORDER BY FIELD(state,'Open','Hold','Closed') ASC, o_date DESC

已尝试添加此处给出的示例:Can you add an if statement in ORDER BY? 但我没有得到我想要的结果。

有什么想法吗?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    试试这个..

    SELECT * FROM mytable 
    ORDER BY FIELD(state,'Open','Hold','Closed') ASC, 
    CASE WHEN state = 'Closed' THEN date END DESC,
    date ASC
    

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      相关资源
      最近更新 更多