精华内容
下载资源
问答
  • mysql按照指定顺序排序
    千次阅读
    2018-07-13 10:42:42

    记录Order By,手动指定排序

    order by field(value,str1,str2,str3,str4,,,,,,strn)
    其中value后面的参数自定义,不限制参数个数

    更多相关内容
  • mysql 按照指定顺序排序

    千次阅读 2019-06-26 15:17:45
    SELECT `ID` FROM table_name WHERE `ID` in (1,2,3,4,5) ORDER BY FIELD(`ID`,5,4,3,1,2); // 纯数字字段不用处理引号,比较好拼接 SELECT `ID` FROM table_name WHERE `ID` in (1,2,3,4,5) ORDER BY FIND_IN_SET...

    SELECT `ID` FROM table_name WHERE `ID` in (1,2,3,4,5) ORDER BY FIELD(`ID`,5,4,3,1,2); // 纯数字字段不用处理引号,比较好拼接

    SELECT `ID` FROM table_name WHERE `ID` in (1,2,3,4,5) ORDER BY FIND_IN_SET(`post_title`,'A,B,C,D,E'); // 一个引号全包住,搞定字符值字段 -- 注意:第一个参数不能是字符串,否则不起作用

    展开全文
  • Mysql按照指定顺序排序 场景 select <include refid="Base_Column_List" /> from student <where> id in <foreach collection="ids" item="item" open="(" separator="," close=")"> #{...

    问题场景

        select
        <include refid="Base_Column_List" />
        from student
        <where>
          id in
          <foreach collection="ids" item="item" open="(" separator="," close=")">
            #{item}
          </foreach>
          and deleted = 0 
        </where>
    

    写sql用到in 的时,有时候传入的ids是有特定的顺序的,然而一般查询后返回的结果会丢失掉这种顺序性,例如

    select * from student where id in (2, 3, 4, 1)
    

    结果为
    查询结果

    解决方案

    当然我们可以在业务代码中进行后续矫正,但如果要在sql中保持原本的顺序性不变,可以用到MySQL自定义排序函数FIELD()

    select * from student where id in (2, 3, 4, 1) ORDER BY FIELD(id, 2, 3, 4, 1)
    

    结果
    orderByField结果
    mybatis里加上order by field即可

        select
        <include refid="Base_Column_List" />
        from student
        <where>
          id in
          <foreach collection="ids" item="item" open="(" separator="," close=")">
            #{item}
          </foreach>
          and deleted = 0 
        </where>
        ORDER BY FIELD
          <foreach collection="ids" item="item" open="(" separator="," close=")">
            #{item}
          </foreach>
    

    函数FIELD(value,str1,str2,str3,…)

    原理: 返回value 在列表(s1,s2…)中的位置下标,等于str1返回1,等于str2返回2,若都没命中则返回0

    SELECT FIELD(5, 5, 4, 3);  #结果为1
    
    SELECT FIELD("c", "a", "b", "c", "d", "e");  #结果为3
    
    SELECT FIELD("f", "a", "b", "c", "d", "e");   #结果为0
    

    所以order by field()如果用于 结果集 不包含于 排序集的情况,结果可能会和我们期望的不一样,例如

    select * from student  ORDER BY FIELD(id, 5, 4, 3) 
    

    结果为
    在这里插入图片描述
    带入field函数功能,其实就很好理解了,默认升序,各数据field得分如下:
    在这里插入图片描述
    性能: 对性能有一定要求的话肯定得避函数而远之,根据自己的情况选择

    explain select * from student ORDER BY FIELD(id, 2, 3, 4, 1); 
    # ALL
    
    explain select * from student where id in (2, 3, 4, 1)ORDER BY FIELD(id, 2, 3, 4, 1);
    # range
    

    ELT()函数和FIELD()函数类似,大家有兴趣也可以一块学习下。

    展开全文
  • mysql实现按照自定义(指定顺序排序

    万次阅读 多人点赞 2022-01-31 17:50:35
    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,扩展性较好(有需要甚至可以给与数据字典的配置页面专门维护);

    在这里插入图片描述
    在这里插入图片描述
    仅作记录,方便后续查阅,如有错误还望

    展开全文
  • 比如一个字段为状态 0废弃 1启用 2 禁用 我想把启用的排前面,禁用其次,废弃最后面 SELECT status FROM t_order ORDER BY FIELD(status,0,2,1) DESC
  • 给大家用过实例分析了Mysql查询中指定顺序排序的相关技术问题,需要的朋友参考一下吧。
  • sql使用in关键字的时候比如select name from table where id in (3,2,1),使用mybatis基本是把in中的id使用一个list进行传递,但是这时结果集的顺序并不是按照我们传入的顺序展示,这可能导致一些场景不是很方便. ...
  • SELECT `id`,`name` FROM `user` WHERE id IN(1,3,5,6) ORDER BY INSTR('6,3,5,1', 'id') 之前网上找到的,但是后来忘了,再找就没找到,网上大部分都是case when 但是如果数据量大呢?实在没找到就翻了半天代码...
  • 表结构如下:mysql> select * from test;+—-+——-+| id | name |+—-+——-+| 1 | test1 || 2 | test2 || 3 | test3 || 4 | test4 || 5 | test5 |+—-+——-+执行以下SQL:mysql> select * from test where id...
  • 客户要求多种多样,图片展示排序也是个性化突显,现场需要拍十张图片上传取证,但个性客户要求前5张图片要指定5个类型且指定排序,后五张不指定,故设计数据库表的时候,在全局参数配置表中增加一个顺序的参数(下面...
  • Mysql指定顺序排序查询

    千次阅读 2019-09-12 17:31:28
    -- 纯数字字段不用处理引号,比较好拼接 SELECT `ID` FROM TABLE WHERE `ID` in (1,2,3,4,5) ORDER BY FIELD(`ID`,5,4,3,1,2); -- 一个引号全包住,搞定字符值字段 SELECT `ID` FROM TABLE WHERE `ID` in (1,2,3,...
  • 翟码农现在有一个需求:如果当天创建了很多分类的文章,文章的展示必须按照指定的文章分类来排序mysql该怎么写?主要涉及知识点:order by field(列名, 值1,值2,值3...)方便测试,翟码农从数据库里挑出了8条数据...
  • 那么如何按照指定字段的指定顺序进行排序呢? 例如有一个用户表user,有id,username,status字段,status的字段值有1,2,3,4四种情况,如何将用户表中的数据按照status字段的2,4,1,3顺序进行排序呢? 这时候需...
  • mysql按某字段的具体内容指定顺序排序
  • SELECT `ID` FROM wp_posts WHERE `ID` in (1,2,3,4,5) ORDER BY FIELD(`ID`,5,4,3,1,2); // 纯数字字段不用处理引号,比较好拼接 SELECT `ID` FROM wp_posts WHERE `ID` in (1,2,3,4,5) ORDER BY FIND_IN_SET(`...
  • Mysql把查询到的结果集按指定顺寻进行排序
  • mysql 查询结果如果不给予指定的order by ,那么mysql按照主键顺序(innodb引擎)对结果集加以排序,那么最后的排序可能就不是你想要的排序结果。举个例子,我要按照前端传过来的mongoId集合来查询数据库并且返回同样...
  • select * from table_name where <字段名> in (字段值,字段值,...) order by field(字段名, 字段值,字段值,...)
  • 【大数据技术】!重要!MySQL里按某字段指定内容顺序排序的几种实现方法
  • 此文首发在 InfoQ 中文站。作者:明灵(dragon) , Fenng ....给一些必须在MYSQL排序的实例? A:通常来说,执行效率需要考虑 CPU、内存和硬盘等的负载情况,假定 MYSQL 服务器和 PHP 的服务器都已经按
  • mysql 自定义排序顺序 实例如:在sql语句中加入ORDER BY ... 您可能感兴趣的文章:SQL 按特定字段值排序SQL字符型字段按数字型字段排序实现方法MySQL按照多字段排序及问题解决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...
  • 文件类型指定了几类,需要对指定的文件类型按照指定的顺序进行排序 这是没有排序时候: 按照:‘核准请示’,‘核准报送’,‘水保报送’,'环评报送’的顺序排序 ...
  • 应用场景:当排序既不是升序,也不是降序,必须按照指定顺序时, SELECT * FROM test WHERE id IN (5,3,6,1) (1) ORDER BY FIELD(id,5,3,6,1); (2)ORDER BY find_in_set(a.id,'5,3,6,1');
  • MySql指定字段排序、自定义排序位置

    千次阅读 2022-04-22 14:24:25
    3、通过mysql的FIELD()函数指定排序 3.1定义和用法 3.2 语法 3.3 参数值 3.4实际写法demo 1、创建测试表和添加数据 /* Navicat Premium Data Transfer Source Server : test Source Server Type : MySQL ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,153
精华内容 39,261
关键字:

mysql按照指定顺序排序

mysql 订阅