最近在写一个项目,在项目中有一个要求是按照指定的用户指定顺序,对数据进行排序!网上百度了一下,感觉还是挺有用的,但是不是很清楚工作原理!

mysql的field()函数

filed(s,s1,s2....)函数返回第一个与字符串s匹配的字符串的位置

mysql自定义排序的例子

准备数据

create table zero (

id int primary key AUTO_INCREMENT,

status tinyint not null default 0,

name varchar(20) not null default ''

)engine=myisam charset=utf8

insert into zero (status,name) values

(1,'name1'),

(2,'name2'),

(3,'name3'),

(2,'name4'),

(4,'name5'),

(5,'name6');

得到的表数据如下

mysql> select * from zero;

+----+--------+-------+

| id | status | name |

+----+--------+-------+

| 1 | 1 | name1 |

| 2 | 2 | name2 |

| 3 | 3 | name3 |

| 4 | 2 | name4 |

| 5 | 4 | name5 |

| 6 | 5 | name6 |

+----+--------+-------+

6 rows in set (0.00 sec)

按照状态进行自定义排序

mysql> select * from zero order by field(status, 4,2,1,3,5);

+----+--------+-------+

| id | status | name |

+----+--------+-------+

| 5 | 4 | name5 |

| 2 | 2 | name2 |

| 4 | 2 | name4 |

| 1 | 1 | name1 |

| 3 | 3 | name3 |

| 6 | 5 | name6 |

+----+--------+-------+

6 rows in set (0.00 sec)

//注意:这里是将所有的状态都进行了列举

mysql> select * from zero order by field(status, 4,2,1,3) ;

+----+--------+-------+

| id | status | name |

+----+--------+-------+

| 6 | 5 | name6 |

| 5 | 4 | name5 |

| 2 | 2 | name2 |

| 4 | 2 | name4 |

| 1 | 1 | name1 |

| 3 | 3 | name3 |

+----+--------+-------+

6 rows in set (0.00 sec)

//注意:这里并没有列举状态5,此时状态5出现在了最上面

mysql> select * from zero order by field(status, 4,2,1,3) desc ;

+----+--------+-------+

| id | status | name |

+----+--------+-------+

| 3 | 3 | name3 |

| 1 | 1 | name1 |

| 2 | 2 | name2 |

| 4 | 2 | name4 |

| 5 | 4 | name5 |

| 6 | 5 | name6 |

+----+--------+-------+

6 rows in set (0.00 sec)

//注意:这里并没有列举状态5,此时状态5出现了最下面

mysql> select * from zero where status in (1,2,4,5) order by field(status, 4,2,1,5) ;

+----+--------+-------+

| id | status | name |

+----+--------+-------+

| 5 | 4 | name5 |

| 2 | 2 | name2 |

| 4 | 2 | name4 |

| 1 | 1 | name1 |

| 6 | 5 | name6 |

+----+--------+-------+

5 rows in set (0.00 sec)

我的疑问!

上面仅仅是自定排序的用法,但是,我并不是特别明白filed函数,究竟在排序中发挥了什么样的作用。按照filed函数本身的作用而言,函数返回第一个与字符串匹配的,字符串的位置!

那么,返回的岂不是一个数字么?那对排序而言又有什么意义呢?

mysql自动排序_mysql自动排序相关推荐

  1. mysql自动填充_Mysql自动填充测试数据

    前言 最近写了两个小脚本,一个应用于Mysql的自动填充测试数据,另外一个是bash写的定期删除日志文件,两个脚本如何使用,在GitHub上面都有所说明,这里不再赘述,这里主要是想聊一下Mysql的存 ...

  2. mysql保存测试数据_Mysql自动填充测试数据

    前言 最近写了两个小脚本,一个应用于Mysql的自动填充测试数据,另外一个是bash写的定期删除日志文件,两个脚本如何使用,在GitHub上面都有所说明,这里不再赘述,这里主要是想聊一下Mysql的存 ...

  3. mysql 指定数字排序_Mysql数据排序

    排序数据 普通字段排序 按照单一字段排序 按照多个字段排序 手动指定排序顺序 单个字段手动排序 多个字段手动排序 普通字段排序 按照单一字段排序 排序采用order by子句,order by后面跟上 ...

  4. mysql自动编号_MySQL自动编号与主键

    1.自动编号(AUTO_INCREMENT),必须与主键组合使用 默认情况下,起始值为1,增量也为1. 2.主键(PRIMARY KEY) 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为 ...

  5. 取消mysql自动备份文件_MySQL自动备份并清理多少天前的备份文件

    自动备份一.利用mysql提供的mysqldump工具进行数据库的导入导出二.使用shell命令执行mysqldump/usr/local/mysql/bin/mysqldump --opt -uba ...

  6. mysql 手工修复_MySQL自动备份和手工恢复

    欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 以下是windows下的批处理: 1set hour_str=%time:~0,2% 2if "%hour_st ...

  7. mysql生成序列_mysql 自动生成编号函数

    根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001  (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...

  8. mysql的自动编码_mysql 自动生成编号函数

    根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001  (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...

  9. mysql重连_mysql自动重连

    最近部署一个系统,后台用线程池来处理请求,而每个线程有一个mysql连接.当系统运行一阶段后,有些请求会出现操作"Internal error",而操作一次可能又会成功.经过多方调 ...

最新文章

  1. Ubnutu虚拟机怎么修改开机密码?(在已知旧密码的情况下,开机后设置新的密码的方法)
  2. window下使用rtl-sdr和sdrsharp
  3. Qt / QPainter、QPen、QBrush 如何理解
  4. 绝了!Pandas绘图功能
  5. P3279-[SCOI2013]密码【Manacher】
  6. “睡服”面试官系列第十七篇之Reflect(建议收藏学习)
  7. html5 本地文件操作系统,读取目录 - createReader《 HTML5:文件系统 》
  8. 【kafka】Kafka Connect中的增量协同平衡
  9. linux 目录硬链接,linux为什么不能给目录做硬链接
  10. 读取文本中的数用英文转换过来
  11. 雅虎的用户注册页面抽风了
  12. Java学习笔记目录索引 (持续更新中)
  13. 开源crm排名_排名前6位的开源CRM工具
  14. thinkphp 邮箱配置完美测试
  15. 使用 ifconfig 查看本机 ip
  16. 为什么优秀的管理者不能显得自己太能干?
  17. 决策树(ID3、C4.5、CART、随机森林)
  18. Rcurl--炼数成金课程第一周
  19. 【高德地图API】从头德国高中生JS API(三)覆盖物——大喊|折线|多边形|信息表|聚合marker|点蚀图|照片覆盖...
  20. SQL 之 ROW_NUMBER() OVER函数用法

热门文章

  1. 来!学逆向都想的手游防护(下篇更新破解)
  2. ERA5-Land 逐小时数据_累积值(如辐射数据)处理的注意事项
  3. 洛谷P1095 守望者的逃离 (从未感觉DP如此清晰, 所以这是DP吗2333)
  4. MySQL数据库锁详解
  5. 发那科机器人回原位置先上升_机器人小知识 | 发那科机器人位置信息修改介绍...
  6. 阿里云国际版ACE与国内版ACE区别
  7. 采购信息记录(PIR)创建/修改的正确姿势
  8. NIS (Network Information Service)
  9. fastJson---如何获取json中所有kv(工具类-scala实现)
  10. C++ QT加载字体,以及iconfont使用