当前位置:网站首页>mysql实现按照自定义(指定顺序)排序
mysql实现按照自定义(指定顺序)排序
2022-08-02 05:00:00 【web15286201346】
mysql按照指定顺序排序(自定义排序)
一、mysql中实现指定排序需求
一般情况下,我们排序都是直接利用 order by 字段 asc/desc;但是如果要排序的字段数据格式并不能直接实现,或者说我们需要指定的顺序且没有什么规律,简单的order by字段就实现不了;
如下图中表;
我们需要按照中国银行,建设银行,工商银行顺序排序;直接使用order by 字段并不能得到我们想要的顺序
同样,对于类型我们想要按正回购,买入,卖出这样的顺序去排序,简单的order by 字段也不能实现;
二、解决方案
1:自定义排序实现
01. case when 转换实现自定义排序;
使用case when 将字段中的中国银行,建设银行,工商银行,转换为1,2,3,这样在我们再使用order by实现数据的自定义重排。
02:mysql排序函数filed 实现自定义排序(推荐);
MySQL中的field()函数,可以用来对SQL中查询结果集进行指定顺序排序。
field(str,str1,str2,str3…)字段str按照字符串str1,str2,str3…的顺序返回查询到的结果集。如果表中str字段值不存在于str1,str2,str3中的记录,放在结果集最前面返回。
03:函数locate 实现自定义排序;
还可以利用locate函数来实现排序;
locate(subStr,string) :判断字符串(string)中是否包含另一个字符串(subStr),函数返回的是subStr在string中出现的位置;
04:函数lnstr 实现自定义排序;
INSTR(STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX);
同locate函数大致一样,不过函数内参数一个在前,一个在后;
05:利用数据字典实现自定义排序;
对于部分相对比较固定的字段,一般可以建立数据字典项来,不仅方便返回给前端做下拉等,也方便后期添加和修改的维护,也可以在数据字典中给与对应的顺序;主要可以方便后期调整和维护;只需要修改数据字典中的排序即可;
首先,需要在数据字典表中建立相应的数据字典项并维护顺序;
其次,存储时直接存储对应的数据字典值就可以了,然后关联查询,利用数据字典顺序排序;即可;
如果顺序有变,或者要添加新的类型,也只需要在数据字典中维护即可,不需要修改sql,扩展性较好(有需要甚至可以给与数据字典的配置页面专门维护);


仅作记录,方便后续查阅,如有错误还望
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢
软件测试分析流程及输出项包括哪些内容?

Jmeter使用多线程测试web接口

讯飞AIUI智能机器人5-----让器理解你(语音技术综合应用)

Luogu P2437 Bee Route

MySQL 8.0.28 version installation and configuration method graphic tutorial

CNN 理解神经网络中卷积(大小,通道数,深度)

【云原生】什么是CI/CD? | CI/CD 带来的好处

pg数据库报错问题,有懂的吗

Android studio connects to MySQL and completes simple login and registration functions

MySQL 5.7 detailed download, installation and configuration tutorial
随机推荐
从DES走到AES(现代密码的传奇之路)
MySQL如何创建用户
递归实现指数型枚举(DAY 91)
Android studio connects to MySQL and completes simple login and registration functions
MySQL安装教程
编译失败:HBuilderX 安装目录不能包括 ( 等特殊字符 (HBuilderX,uni-app报错)
Mysql存储json格式数据
元宇宙:活在未来
CNN 理解神经网络中卷积(大小,通道数,深度)
JDBC revisited
通关剑指 Offer——剑指 Offer II 008. 和大于等于 target 的最短子数组
Matlab学习第二天
[网鼎杯 2020 青龙组]singal
数学建模学习笔记:层次分析法(AHP)
Mycat2.0搭建教程
ORA-04044:此处不允许过程、函数、程序包或类型,系统分析与解决
mysql 存储过程详解
MySQL 多表关联一对多查询实现取最新一条数据
认识CAN光纤转换器的光纤接口和配套光纤线缆
Crawler_crawl wasde monthly supply and demand balance table (example)