【发布时间】:2015-09-19 16:14:44
【问题描述】:
有带列的订单表:status,created_at
具有值的状态列:新、处理、其他。
问题是选择所有订单,首先是状态为新的,然后是状态处理,然后是所有其他订单。
新订单和处理订单按created_at升序排序,所有其他订单按created_at降序排序。
我尝试了许多不同的方法,但都坚持了下来。
例如尝试与联合两个选择组合,但结果联合忽略内部查询中的选择顺序。
或其他变体:
SELECT orders.status, orders.created_at FROM `orders` ORDER BY status = 'new' DESC, status = 'processing' DESC,
CASE
WHEN (orders.status='new' or orders.status='processing')
THEN -created_at
ELSE created_at
END;
也不行。
【问题讨论】:
标签: mysql sql sql-order-by