Mybatis自定义排序详解CASE WHEN

本文介绍如何使用自定义排序处理复杂的数据排序需求,包括按照等级和分数进行特定排序的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单排序例子

需求提升,小试牛刀 

函数说明 

实现方式1:直接排序

实现方式2:自定义排序字段后排序

需求提升,大展身手


 

简单排序例子

我们现在有学生数据

简单查询排序按照分数的升序排列

需求提升,小试牛刀 

但是我们现在有一个需求,把分数分为3个等级,

  • 优秀(80分以上)
  • 合格【60-80】
  • 不合格(60分一以下)

要求排序的顺序是:优秀--合格--不合格,同等级的再按照分数的升序排序

根据我们的数据,一共有5个分数(40,49,60,89,98),按照以上的排序需求,正确的排序后的结果顺序应该为(89,98,60,40,49)

看到这个(89,98,60,40,49),懵了,这完全没有规律可言,这就需要我们的自定义排序了,也就是我们这篇文章的主题

函数说明 

CASE

WHEN 条件1 THEN  返回结果1

WHEN 条件2 THEN 返回结果2

ELSE  返回结果3

END 正序还是倒序

CASE 表示函数开始

END 表示函数结束

如果 条件1 成立,则返回 返回结果1, 如果 条件2 成立,则返回 返回结果2,当全部不成立则返回ELSE后面的返回结果3,而当有一个成立之后,后面的就不执行了。

实现方式1:直接排序

实现方式2:自定义排序字段后排序

需求提升,大展身手

现在我们的需求提升了,分数还是分为3个等级,

  • 优秀(80分以上)
  • 合格【60-80】
  • 不合格(60分一以下)

要求排序的顺序是:优秀--合格--不合格,但是要求优秀的级别内按降序排序,其他按升序排序,那所期望的结果就变为(98,89,60,40,49)

上面实现方式2中实现了所有的级别内都是统一升序或者降序排序,那么要满足我们现在的需求,那就再改造一下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深知她是一场梦

你打不打赏,我都会一直写博客

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

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

打赏作者

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

抵扣说明:

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

余额充值