MYSQL 根据条件order by 动态排序

最近在做大数据报表时,遇到这样一种情况,若是A类型,则部门按照正序排序;

若是B类型,则部门按照倒叙排序,相等于案例1的情况。尝试用了下Ai给出的案例,结果sql

一个大大的红×,报错了。可见AI给出的答案也并不是完全准确的。 后来又尝试看看网友们

有什么好用的办法,结果列的答案和AI也是大差不差,甚至内容都和AI一样, 那能使用也是奇怪了。

后来尝试了N遍,突发奇想,尝试了下终于成功了,在这里分享给大家。有需要的可以自取。

案例1:根据动态值的不同,决定某个字段是升序还是降序

根据og.asd字段等于1还是2 决定 og.xc 是升序还是降序
select * from 表A og
order by 
 (case og.asd
    when '1' THEN og.xc end ) asc ,
 (case og.asd
    when '2' THEN og.xc end ) desc ;		

案例2:根据动态值的不同,决定使用哪个字段排序

根据og.asd字段等于1还是2 决定是使用og.asx 还是og.zxsa排序

select * from 表A og
order by 	
 (case og.asd
  when '2' THEN og.asx
  when '1' THEN og.zxsa
  end ) desc;
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博客胡

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值