我需要一些关于mysql查询的帮助,我一直在苦苦挣扎这几天,我研究的越多,我就越困惑。这是我的疑问:
SELECT name, pax, agency, origin, destination, internal_notes,
departure_flight, departure_date, arrival_date, arrival_flight,
TIME_FORMAT(arrival_time, '%H:%i') AS arrival_time,
TIME_FORMAT(pick_up, '%H:%i') AS pick_up, service_type
FROM reservas
WHERE arrival_date=? OR departure_date=?
ORDER BY pick_up, arrival_time ASC
从这个查询我选择从某个日期开始通过“while”选择服务时间的所有服务,这取决于数据库上的service_type字段,所以如果它到达它选择arrival_time,如果它是DEPARTURE或INTERHOTEL它选择pick_up而不是arrival_time,问题是我需要按时间顺序排序这个结果,无论它们是什么样的服务,我上面的查询得到的结果如下:
实施例
ARRIVAL 13:10
ARRIVAL 13:15
ARRIVAL 13:40
DEPARTURE 13:05
DEPARTURE 13:45
INTERHOTEL 13:00
但是,我需要的是“混合”所有结果并按照这样的顺序排序:
INTERHOTEL 13:00
DEPARTURE 13:05
ARRIVAL 13:10
ARRIVAL 13:15
ARRIVAL 13:40
DEPARTURE 13:45
答案 0 :(得分:0)
我想你想要一个CASE
表达式:
ORDER BY (CASE WHEN service_type IN ('DEPARTURE', 'INTERHOTEL') THEN pick_up ELSE arrival_time END) ASC
答案 1 :(得分:0)
您是否只想从ORDER BY中删除pick_up?
所以只需将它ORDER BY arrival_time ASC