存在带列的订单表:status
,created_at
状态列具有值:new,processing,other。MySQL根据条件排列
问题是选择所有订单,首先在状态处理之后选择状态为新的订单,然后选择所有订单。 新的加工订单应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;
不工作过。
@ lad2025我认为运首先要对新订单,然后用状态的处理,那么所有的人,你的情况下,当将第一次把加工订单。一个'FIELD(状态,'处理','新')DESC'可以替代,我喜欢两条线,但我会尝试哪一个更好 – fthiella