如何订购2个mysql列为1

时间:2018-03-10 00:50:03

标签: php mysql subquery

我需要一些关于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

2 个答案:

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