服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - mysql按照自定义(指定顺序)排序的方法实例

mysql按照自定义(指定顺序)排序的方法实例

2022-11-03 16:02Quader Mysql

在我们写业务代码的时候,会经常碰见排序方式既不是正序也不是倒序,下面这篇文章主要给大家介绍了关于mysql按照自定义(指定顺序)排序的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

一、mysql中实现指定排序需求

一般情况下,我们排序都是直接利用 order by 字段 asc/desc;但是如果要排序的字段数据格式并不能直接实现,或者说我们需要指定的顺序且没有什么规律,简单的order by字段就实现不了;

如下图中表;

mysql按照自定义(指定顺序)排序的方法实例

我们需要按照中国银行,建设银行,工商银行顺序排序;直接使用order by 字段并不能得到我们想要的顺序

mysql按照自定义(指定顺序)排序的方法实例

同样,对于类型我们想要按正回购,买入,卖出这样的顺序去排序,简单的order by 字段也不能实现;

mysql按照自定义(指定顺序)排序的方法实例

 

二、解决方案

 

1:自定义排序实现

 

01. case when 转换实现自定义排序;

使用case when 将字段中的中国银行,建设银行,工商银行,转换为1,2,3,这样在我们再使用order by实现数据的自定义重排。

mysql按照自定义(指定顺序)排序的方法实例

 

02:mysql排序函数filed 实现自定义排序(推荐);

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

field(str,str1,str2,str3…)字段str按照字符串str1,str2,str3…的顺序返回查询到的结果集。如果表中str字段值不存在于str1,str2,str3中的记录,放在结果集最前面返回。

mysql按照自定义(指定顺序)排序的方法实例

 

03:函数locate 实现自定义排序;

还可以利用locate函数来实现排序;

locate(subStr,string) :判断字符串(string)中是否包含另一个字符串(subStr),函数返回的是subStr在string中出现的位置;

mysql按照自定义(指定顺序)排序的方法实例

 

04:函数lnstr 实现自定义排序;

INSTR(STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX);

同locate函数大致一样,不过函数内参数一个在前,一个在后;

mysql按照自定义(指定顺序)排序的方法实例

 

05:利用数据字典实现自定义排序;

对于部分相对比较固定的字段,一般可以建立数据字典项来,不仅方便返回给前端做下拉等,也方便后期添加和修改的维护,也可以在数据字典中给与对应的顺序;主要可以方便后期调整和维护;只需要修改数据字典中的排序即可;

首先,需要在数据字典表中建立相应的数据字典项并维护顺序;

mysql按照自定义(指定顺序)排序的方法实例

其次,存储时直接存储对应的数据字典值就可以了,然后关联查询,利用数据字典顺序排序;即可;

mysql按照自定义(指定顺序)排序的方法实例

如果顺序有变,或者要添加新的类型,也只需要在数据字典中维护即可,不需要修改sql,扩展性较好(有需要甚至可以给与数据字典的配置页面专门维护);

mysql按照自定义(指定顺序)排序的方法实例

 

总结

到此这篇关于mysql按照自定义(指定顺序)排序的文章就介绍到这了,更多相关mysql按照自定义排序内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/quader/article/details/122761023

延伸 · 阅读

精彩推荐
  • Mysqlmysql截取的字符串函数substring_index的用法

    mysql截取的字符串函数substring_index的用法

    这篇文章主要介绍了mysql截取的字符串函数substring_index的用法,需要的朋友可以参考下 ...

    whsnow5072020-04-16
  • Mysql详解分析MySQL8.0的内存消耗

    详解分析MySQL8.0的内存消耗

    这篇文章主要介绍了详解分析MySQL8.0的内存消耗,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下...

    AsiaYe14802021-04-27
  • MysqlLinux手动部署远程的mysql数据库的方法详解

    Linux手动部署远程的mysql数据库的方法详解

    这篇文章主要介绍了Linux手动部署远程的mysql数据库的方法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可...

    爱学习的小白菜!7102021-03-09
  • Mysql对MySQL几种联合查询的通俗解释

    对MySQL几种联合查询的通俗解释

    这篇文章主要介绍了LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。下面给个通俗的解释吧 ...

    MYSQL教程网5232020-04-27
  • MysqlMysql事务的隔离级别(脏读+幻读+可重复读)

    Mysql事务的隔离级别(脏读+幻读+可重复读)

    这篇文章主要介绍了Mysql事务的隔离级别(脏读+幻读+可重复读),文章通告InnoDB展开详细内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下...

    哇~是小菜呀9952022-08-24
  • MysqlMySQL死锁检查处理的正常方法

    MySQL死锁检查处理的正常方法

    这篇文章主要给大家介绍了关于MySQL死锁检查处理的正常方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    薛定谔的DBA11842021-02-22
  • MysqlCentos7.3下mysql5.7安装配置教程

    Centos7.3下mysql5.7安装配置教程

    这篇文章主要为大家详细介绍了Centos7.3下mysql5.7安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    IT丶Man4072020-08-13
  • Mysql详细聊聊MySQL中慢SQL优化的方向

    详细聊聊MySQL中慢SQL优化的方向

    由于在MySQL日常查询中,查询类型的语句占慢sql的大部分,所以下面这篇文章主要给大家介绍了关于MySQL中慢SQL优化方向的相关资料,文中通过示例代码介绍的...

    Ijiran6582021-09-26