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

目录
  • 一、mysql中实现指定排序需求
  • 二、解决方案
    • 1:自定义排序实现
      • 01. case when 转换实现自定义排序;
      • 02:mysql排序函数filed 实现自定义排序(推荐);
      • 03:函数locate 实现自定义排序;
      • 04:函数lnstr 实现自定义排序;
      • 05:利用数据字典实现自定义排序;
  • 总结

一、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,扩展性较好(有需要甚至可以给与数据字典的配置页面专门维护);

总结

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

(0)

相关推荐

  • MySQL按常规排序、自定义排序和按中文拼音字母排序的方法

    MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3种比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 DESC倒叙 -- 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序. 主要是使用函数 FIELD(str,str1,str2,str3,...) MySQL的自定义排序,str与str1.str2.str3...进行比较,并按照str1,str2,str3..

  • mysql自定义排序顺序语句

    mysql 自定义排序顺序 实例如:在sql语句中加入ORDER BY FIELD(status,3,4,0,2,1)语句可定义排序顺序 说明:status为排序字段,后面为该字段的相关值

  • MySQL 按指定字段自定义列表排序的实现

    问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORDER BY `id` ASC 降序排列的 SQL 为: SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORDER BY `id` DESC 有时以上排序并不能满足我们的需求. 例如, 我们想要按 id 以 5, 3, 7, 1 的顺序排列

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

    目录 一.mysql中实现指定排序需求 二.解决方案 1:自定义排序实现 01. case when 转换实现自定义排序: 02:mysql排序函数filed 实现自定义排序(推荐): 03:函数locate 实现自定义排序: 04:函数lnstr 实现自定义排序: 05:利用数据字典实现自定义排序: 总结 一.mysql中实现指定排序需求 一般情况下,我们排序都是直接利用 order by 字段 asc/desc;但是如果要排序的字段数据格式并不能直接实现,或者说我们需要指定的顺序且没有什么规

  • php自定义函数实现二维数组按指定key排序的方法

    本文实例讲述了php自定义函数实现二维数组按指定key排序的方法.分享给大家供大家参考,具体如下: 二维数组官方的排序方法并不好,该函数可以进行指定key的排序,已经测试并使用,代码如下: /*二维数组按指定的键值排序*/ function array_sort($arr, $keys, $type = 'desc') { $keysvalue = $new_array = array(); foreach ($arr as $k => $v) { $keysvalue[$k] = $v[$ke

  • 浅谈Mysql指定顺序排序查询

    最近做一个大屏展示项目,类似于机场,火车站那种展示班次信息的那种,不过展示的内容要复杂的多,其中部分数据如下: 前端主要用Vue框架,要求后端数据在前端展示, 第一:进厂,出厂指标不固定(可能6,也可能以后7,8个): 第二:无"数值"值的用斜杠代替: 第三:进出厂指标名字一定要符合如上图指定的名字(后端数据库查询出来的名字和前端指定的名字不一样,以及单位中带有 ">1",">0.3"之类的,所以不能直接从后端查询 ,名字+单位 放在

  • Java实现自定义Excel数据排序的方法详解

    目录 1.引入jar包 2.自定义排序 通常,我们可以在Excel中对指定列数据执行升序或者降序排序,排序时可依据单元格中的数值.单元格颜色.字体颜色或图标等.在需要自定义排序情况下,我们也可以自行根据排序需要编辑数据排列顺序.本文,将通过Java应用程序来实现如何自定义排序. 1.引入jar包 使用jar包:Spire.Xls.jar version: 12.8.4 导入方法1:手动下载jar到本地,解压,然后找到lib文件夹下的Spire.Xls.jar文件.然后在IDEA中打开“Proje

  • Java编程实现汉字按字母顺序排序的方法示例

    本文实例讲述了Java编程实现汉字按字母顺序排序的方法.分享给大家供大家参考,具体如下: String[] str0 = new String[]{"abd","ervcd","sdfc","abdc","sded","生活","文教","政治"}; String[] str1 = new String[]{"生活","

  • php实现数组按拼音顺序排序的方法 原创

    本文实例讲述了php实现数组按拼音顺序排序的方法.分享给大家供大家参考,具体如下: 一.问题: 给定数组要求实现按照其汉字首字母排序: $pinyin = array( array('name'=>'梁朝伟','age'=>23), array('name'=>'andy','age'=>24), array('name'=>'黎明','age'=>19), array('name'=>'郭富城','age'=>20) ); 二.解决方法: <?php

  • php实现数组按指定KEY排序的方法

    本文实例讲述了php实现数组按指定KEY排序的方法.分享给大家供大家参考.具体实现方法如下: function array_sort($arr,$keys,$orderby='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($orderby== 'asc'){ asort($keysvalue); }else{ arsort($keysvalu

  • Golang算法问题之数组按指定规则排序的方法分析

    本文实例讲述了Golang算法问题之数组按指定规则排序的方法.分享给大家供大家参考,具体如下: 给出一个二维数组,请将这个二维数组按第i列(i从1开始)排序,如果第i列相同,则对相同的行按第i+1列的元素排序, 如果第i+1列的元素也相同,则继续比较第i+2列,以此类推,直到最后一列.如果第i列到最后一列都相同,则按原序排列. 样例输入: 1,2,3 2,3,4 2,3,1 1,3,1 按第2列排序,输出: 1,2,3 2,3,1 1,3,1 2,3,4 代码实现: 复制代码 代码如下: pac

  • python读取TXT到数组及列表去重后按原来顺序排序的方法

    本文实例讲述了python读取TXT到数组及列表去重后按原来顺序排序的方法.分享给大家供大家参考.具体如下: #################################################################### # python 读取TXT到数组 列表去重,不打乱原来的顺序 # 刚学写的不好请大家见谅 #################################################################### def open_tx

  • Java实现按照大小写字母顺序排序的方法

    本文实例讲述了Java实现按照大小写字母顺序排序的方法.分享给大家供大家参考,具体如下: 这里排序需要得到的结果按字母顺序.如:a-----z... import java.util.*; /** * 大小写字母的排序 * @author Administrator * */ public class z { //上边是按大写在后的进行排序 static Map<Character,Float> map=new HashMap<Character,Float>();//hashMa

随机推荐