mysql 根据不同状态进行排序、多字段排序

需求描述

商城后台管理订单列表,需要先根据订单状态排序,在进行创建时间排序
排序规则:

  • 代发货(asc)—>待付款(desc)—>待收货(desc)—>交易成功(desc)—>交易关闭(desc)

订单状态:

  • 0->待付款;1->待发货;2->待收货;3->已完成;4->已关闭;
order by
        case when orders.status=1 then 0 else 4 end, // 如果status=1,则返回0,其他的返回4
        orders.status asc, // 按status排序
        case when orders.status=1 then orders.create_time end asc, // 如果status=1则按create_time正序排序
        case when orders.status!=1 then orders.create_time end desc // 如果status!=1则按create_time倒序排序
MySql 中关键字 case when then else end 的用法
case  // 如果
  when status=1 then 0 // status=1,则返回值0   
else 4 // 其他的返回4
end // 结束

你可能感兴趣的:(spring,boot,mysql,mybatis,mysql)