Mybatis自定义排序详解CASE WHEN

简单排序例子

需求提升,小试牛刀 

函数说明 

实现方式1:直接排序

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

需求提升,大展身手


 

简单排序例子

我们现在有学生数据

Mybatis自定义排序详解CASE WHEN_第1张图片

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

Mybatis自定义排序详解CASE WHEN_第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:直接排序

Mybatis自定义排序详解CASE WHEN_第3张图片

Mybatis自定义排序详解CASE WHEN_第4张图片

Mybatis自定义排序详解CASE WHEN_第5张图片

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

Mybatis自定义排序详解CASE WHEN_第6张图片

需求提升,大展身手

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

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

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

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

Mybatis自定义排序详解CASE WHEN_第7张图片

你可能感兴趣的:(Mybatis,Mysql,mybatis,排序,自定义,case,when)