自定义排序——Mysql简单排序技巧

今天有个同事接了个需求,产品经理要求要用她指定的顺序查看一些公司及其子公司的业绩情况。

根据她天花乱坠的需求的文档,整理出了以下的简单的抽象模型:

需求描述

aCompany、bCompany、cCompany代表公司的名称,0XsubCompany代表子公司的名称,一个公司包含一个或多个子公司。产品经理想看到页面上按照b、c、a的顺序看这些公司的财务情况。

SELECT * FROM test.rankTable;

开发设计

最开始啥都不去百度,上来直接想给这些abc的company刷个数加个一二三之类的前缀,冷静下来一想,刷数可以,但没必要。 经了解:

MySQL中的field()函数,可用来对SQL中查询结果集进行自定义排序。

结果就通过sql直接简化了开发,最终sql如下:

select * from test.rankTable order by field(
	rank_no ,
    'bCompany',
    'cCompany',
    'aCompany'
) ,rank_detail DESC ;

 这样,最终的结果集就能按照我们指定的字段顺序进行排序了。

结论汇总

field函数语法:

select * from table_name order by

field(col_name1 ,'value1','value2','value3',......) , col_name2 [ASC/DESC]...... ;

如果是oracle数据库,可以用库中自带的decode函数进行自定义排序,相关用法这里不做介绍了。

留此短文,以作笔记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值