mysql自动排序_mysql自动排序
最近在写一个项目,在项目中有一个要求是按照指定的用户指定顺序,对数据进行排序!网上百度了一下,感觉还是挺有用的,但是不是很清楚工作原理!
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自动排序相关推荐
- mysql自动填充_Mysql自动填充测试数据
前言 最近写了两个小脚本,一个应用于Mysql的自动填充测试数据,另外一个是bash写的定期删除日志文件,两个脚本如何使用,在GitHub上面都有所说明,这里不再赘述,这里主要是想聊一下Mysql的存 ...
- mysql保存测试数据_Mysql自动填充测试数据
前言 最近写了两个小脚本,一个应用于Mysql的自动填充测试数据,另外一个是bash写的定期删除日志文件,两个脚本如何使用,在GitHub上面都有所说明,这里不再赘述,这里主要是想聊一下Mysql的存 ...
- mysql 指定数字排序_Mysql数据排序
排序数据 普通字段排序 按照单一字段排序 按照多个字段排序 手动指定排序顺序 单个字段手动排序 多个字段手动排序 普通字段排序 按照单一字段排序 排序采用order by子句,order by后面跟上 ...
- mysql自动编号_MySQL自动编号与主键
1.自动编号(AUTO_INCREMENT),必须与主键组合使用 默认情况下,起始值为1,增量也为1. 2.主键(PRIMARY KEY) 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为 ...
- 取消mysql自动备份文件_MySQL自动备份并清理多少天前的备份文件
自动备份一.利用mysql提供的mysqldump工具进行数据库的导入导出二.使用shell命令执行mysqldump/usr/local/mysql/bin/mysqldump --opt -uba ...
- mysql 手工修复_MySQL自动备份和手工恢复
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 以下是windows下的批处理: 1set hour_str=%time:~0,2% 2if "%hour_st ...
- mysql生成序列_mysql 自动生成编号函数
根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001 (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...
- mysql的自动编码_mysql 自动生成编号函数
根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001 (AA-yyyy-MM-dd-序号).数据库用的mysql,所以创建一个mysql函数. 1.建表: cre ...
- mysql重连_mysql自动重连
最近部署一个系统,后台用线程池来处理请求,而每个线程有一个mysql连接.当系统运行一阶段后,有些请求会出现操作"Internal error",而操作一次可能又会成功.经过多方调 ...
最新文章
- Ubnutu虚拟机怎么修改开机密码?(在已知旧密码的情况下,开机后设置新的密码的方法)
- window下使用rtl-sdr和sdrsharp
- Qt / QPainter、QPen、QBrush 如何理解
- 绝了!Pandas绘图功能
- P3279-[SCOI2013]密码【Manacher】
- “睡服”面试官系列第十七篇之Reflect(建议收藏学习)
- html5 本地文件操作系统,读取目录 - createReader《 HTML5:文件系统 》
- 【kafka】Kafka Connect中的增量协同平衡
- linux 目录硬链接,linux为什么不能给目录做硬链接
- 读取文本中的数用英文转换过来
- 雅虎的用户注册页面抽风了
- Java学习笔记目录索引 (持续更新中)
- 开源crm排名_排名前6位的开源CRM工具
- thinkphp 邮箱配置完美测试
- 使用 ifconfig 查看本机 ip
- 为什么优秀的管理者不能显得自己太能干?
- 决策树(ID3、C4.5、CART、随机森林)
- Rcurl--炼数成金课程第一周
- 【高德地图API】从头德国高中生JS API(三)覆盖物——大喊|折线|多边形|信息表|聚合marker|点蚀图|照片覆盖...
- SQL 之 ROW_NUMBER() OVER函数用法
热门文章
- 来!学逆向都想的手游防护(下篇更新破解)
- ERA5-Land 逐小时数据_累积值(如辐射数据)处理的注意事项
- 洛谷P1095 守望者的逃离 (从未感觉DP如此清晰, 所以这是DP吗2333)
- MySQL数据库锁详解
- 发那科机器人回原位置先上升_机器人小知识 | 发那科机器人位置信息修改介绍...
- 阿里云国际版ACE与国内版ACE区别
- 采购信息记录(PIR)创建/修改的正确姿势
- NIS (Network Information Service)
- fastJson---如何获取json中所有kv(工具类-scala实现)
- C++ QT加载字体,以及iconfont使用