按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
答案 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