按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.约会结束时为NULL
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
最佳答案
转换为秒以进行比较
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
关于mysql - MySQL ORDER BY 2栏异常(exception),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42493069/