MySQL ORDER BY 2 列有异常
MySQL ORDER BY 2 columns with exception
按 2 列对搜索结果进行排序时出现问题。
我的table:中转时间以秒为单位存储,预约为时间
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
我想制作一个 select 来排序记录:
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
按 2 列对搜索结果进行排序时出现问题。
我的table:中转时间以秒为单位存储,预约为时间
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
我想制作一个 select 来排序记录:
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