mysql查询一个订单表 按照状态来排序 怎么写 -1永远排最后 2排最前
状态 status 订单状态 -1撤销 0待付款1待接单2待操作3待审核4已审核5待好评6已好评 7完成 待操作永远是排最前 然后撤销的永远排最后 然后其他状态按照正常的升序来排 这样的排序
顺晟科技
2022-09-15 13:23:34
40
状态 status 订单状态 -1撤销 0待付款1待接单2待操作3待审核4已审核5待好评6已好评 7完成
待操作永远是排最前 然后撤销的永远排最后 然后其他状态按照正常的升序来排 这样的排序能用mysql完成吗? 如果不能,用php怎么写?
select * from (select case when status==2 then 7,
when status==-1 then -1
end as newStatus,status from m_table) m order by newStatus desc;
sql 没有验证过,但是思路没问题,将状态对应的值重新映射一列作为排序用的种子。
这个订单状态从表设计上来讲有点问题,太多不同意义的状态混在一个字段里
把不同意义的状态 拆出来更好一些
订单状态 0:无效 1:处理中 2:撤销 3:完成
支付状态 1:待支付 2:支付失败 3:支付成功
审核状态 1:待审核 2:审核拒绝 3:审核通过
评价状态 1:待评价 2:差评 3:好评
select * from table order by (status=2) desc,(status=-1) asc,status asc;
15
2022-09
03
2021-10
07
2021-07