MySQL ORDER BY 2列,异常

时间:2017-02-27 18:22:22

标签: mysql sql-order-by

按2列排序搜索结果的问题。

我的表:过境时间以秒为单位存储,预约时间

id  transit_time appointment
----------------------------
 2  3845         09:00:00
11  22053        13:00:00
10  4852         08:00:00
11  5985         NULL 
13  7221         12:45:00
14  3812         NULL
17  4256         NULL
18  5663         NULL
19  4725         NULL

我想通过以下方式对记录进行排序:

1。约会最后为空

2。按预约时间ASC

第3。如果过境时间大于预约,则该记录应位于第2点的排序之上

例如,正确的顺序应为:

id  transit_time appointment
----------------------------
11  22053        13:00:00
13  10221        12:45:00
10  3852         08:00:00 
 2  4245         09:00:00
11  5985         NULL
18  5663         NULL
19  4725         NULL
17  4256         NULL
14  3812         NULL

我尝试了许多CASE但没有运气来获得该订单。任何帮助将不胜感激。

SELECT * FROM table WHERE ...
ORDER BY (CASE WHEN appointment IS NULL THEN 1 ELSE 0 END) asc, 
transit_time desc

1 个答案:

答案 0 :(得分:0)

转换为秒进行比较

 ORDER BY CASE WHEN time_appointment IS NULL THEN 1 ELSE 0 END ,
 transit_time DESC,
CASE WHEN transit_time > TIME_TO_SEC(time_appointment) THEN transit_time ELSE NULL END