MySQL中 指定字段排序函数field()的用法
MySQL中的field()函数,可以用来对SQL中查询结果集进行指定顺序排序。
函数使用格式如下:
order by (str,str1,str2,str3,str4……),str与str1,str2,str3,str4比较,其中str指的是字段名字,
意为:字段str按照字符串str1,str2,str3,str4的顺序返回查询到的结果集。如果表中str字段值不存在于str1,str2,str3,str4中的记录,放在结果集最前面返回。
例:
表数据如下:
root@localhost|iris>select * from ta;
+----+--------+------+-------+
| id | name | age | class |
+----+--------+------+-------+
| 1 | iris | 11 | a1 |
| 2 | iris | 22 | a2 |
| 3 | seiki | 33 | a3 |
| 4 | seiki | 44 | a4 |
| 5 | xuding | 55 | a5 |
| 6 | xut | 66 | a6 |
| 7 | iris | 12 | a2 |
| 8 | iris | 24 | a4 |
| 9 | seiki | 36 | a6 |
| 10 | seiki | 48 | a8 |
| 11 | xuding | 50 | a0 |
| 12 | xut | 77 | a7 |
+----+--------+------+-------+
12 rows in set (0.00 sec)
按照'seiki','iris','xut'来排序,结果如下:
root@localhost|iris>select * from ta order by field(name,'seiki','iris','xut');
+----+--------+------+-------+
| id | name | age | class |
+----+--------+------+-------+#不在str1,str2,str3中的内容,放在最前面返回,str值相同按照主键的顺序
| 5 | xuding | 55 | a5 |
| 11 | xuding | 50 | a0 |
| 3 | seiki | 33 | a3 |
| 4 | seiki | 44 | a4 |
| 9 | seiki | 36 | a6 |
| 10 | seiki | 48 | a8 |
| 1 | iris | 11 | a1 |
| 2 | iris | 22 | a2 |
| 7 | iris | 12 | a2 |
| 8 | iris | 24 | a4 |
| 6 | xut | 66 | a6 |
| 12 | xut | 77 | a7 |
+----+--------+------+-------+
12 rows in set (0.00 sec)
按照'seiki','iris'来排序,结果如下:
root@localhost|iris>select * from ta order by field(name,'seiki','iris');
+----+--------+------+-------+
| id | name | age | class |
+----+--------+------+-------+#不在str1,str2,str3中的内容,放在最前面返回;str值相同按主键顺序排列
| 5 | xuding | 55 | a5 |
| 6 | xut | 66 | a6 |
| 11 | xuding | 50 | a0 |
| 12 | xut | 77 | a7 |
| 3 | seiki | 33 | a3 |
| 4 | seiki | 44 | a4 |
| 9 | seiki | 36 | a6 |
| 10 | seiki | 48 | a8 |
| 1 | iris | 11 | a1 |
| 2 | iris | 22 | a2 |
| 7 | iris | 12 | a2 |
| 8 | iris | 24 | a4 |
+----+--------+------+-------+
12 rows in set (0.00 sec)
按照'seiki','iris' desc 来排序,结果如下:
root@localhost|iris>select * from ta order by field(name,'seiki','iris') desc;
+----+--------+------+-------+
| id | name | age | class |
+----+--------+------+-------+
| 1 | iris | 11 | a1 |
| 2 | iris | 22 | a2 |
| 7 | iris | 12 | a2 |
| 8 | iris | 24 | a4 |
| 3 | seiki | 33 | a3 |
| 4 | seiki | 44 | a4 |
| 9 | seiki | 36 | a6 |
| 10 | seiki | 48 | a8 |#倒序时,按照str3,str2,str1的顺序逆向排序,
| 5 | xuding | 55 | a5 |#不在str1,str2,str3中的记录放到最后;str值相同按主键顺序排列
| 6 | xut | 66 | a6 |
| 11 | xuding | 50 | a0 |
| 12 | xut | 77 | a7 |
+----+--------+------+-------+
望满足需求。
---------------------
作者:世樹
来源:CSDN
原文:https://blog.csdn.net/iris_xuting/article/details/80192477?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
MySQL中 指定字段排序函数field()的用法的更多相关文章
- mysql中的去除空格函数
(1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 案例:update `ne ...
- Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)
应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...
- mysql中bit_count和bit_or函数的含义
翻阅mysql手册时,看到有个示例使用了bit_or方法来去除重复的数据,一开始没看明白,后来看明白之后感觉非常巧妙.示例要实现的功能就是计算每月有几天有访问,先把示例摘录在这里. 1 2 3 4 5 ...
- mysql 中时间和日期函数应用
一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +-------------------- ...
- mysql中判断字段为空
mysql中判断字段为null或者不为null 在mysql中,查询某字段为空时,切记不可用 = null, 而是 is null,不为空则是 is not null select nulco ...
- mysql 中 时间和日期函数
From: http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.html 一.MySQL 获得当前日期时间 函数 1.1 获得当前日 ...
- 【mysql】在mysql中更新字段的部分值,更新某个字符串字段的部分内容
在mysql中更新字段的部分值,更新某个字符串字段的部分内容 sql语句如下: update goods set img = REPLACE(img,'http://ozwm3lwui.bkt.clo ...
- sql 筛选表中指定字段包含26某个小写字母
SELECT *from 表名WHERE 字段 COLLATE Chinese_PRC_CS_AS LIKE '%[abcdefghijklmnopqrstuvwxyz]%'筛选表中指定字段包含26某 ...
- mysql中时间字段datetime怎么判断为空和不为空
mysql中时间字段datetime怎么判断为空和不为空一般为空都用null表示,所以一句sql语句就可以.select * from 表名 where 日期字段 is null;这里要注意null的 ...
随机推荐
- getBoundingClientRect获取元素在页面上的位置
getBoundingClientRect用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置. getBoundingClientRect是DOM元素到浏览器可视范围的距离(不包含文档卷起 ...
- 解决IIS配置问题
解决网站运行一段时间会变慢的问题 http://blog.csdn.net/rryqsh/article/details/8156558 1. IIS 7 应用程序池自动回收关闭的解决方案 如果你正在 ...
- Windows10安装pycocotools方法,亲测可用!
如果遇到:No module named 'pycocotools' 错误,说明你的环境需要安装pycocotools,以下介绍在Windows10下安装pycocotools的方法,这是本人结合看过 ...
- virtualbox下centos虚拟机安装,并网卡配置桥接方式上网,使得和host可以互Ping通。
见:http://www.cnblogs.com/taoshiqian/p/7615993.html 注意: 1.host 主机什么都不要处理 2.将virtualbox 的对应虚拟机网络设置桥接 3 ...
- 如何使用wepy和 vant-weapp开发小程序
这里记录一下 使用wepy框架和 vant-weapp库开发小程序废话 不多说 wepy文档: https://tencent.github.io/wepy/document.html#/ van ...
- 解题(Solution -4Sum)
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- C语言的三目运算符(x=a?b:c):条件运算符
三目运算符使用是为了有条件判断的选择赋值 x = a ? b : c 先计算 a表达式 是否为真.若为真,x 的值便是 b表达式的值,否则 x的值便是 c表达式的值. 条件运算符是右结合的. 如:a ...
- pl/sql developer 问题总结
问题1,出现NLS_LANG和字符集(Character set)问题 安装完PL/SQL后打开,遇到如图问题. 原因:这是因为系统没有设置NLS_LANG系统变量. 解决方法:有两种方式查看. 1. ...
- Python人工智能第二篇
Python人工智能之路 - 第二篇 : 现成的技术 预备资料: 1.FFmpeg: 链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w ...
- HTML5智能表单
HTML5 智能表单 1.表单新增属性 ☀ autofocus 属性 <input type="text" autofocus/>设置 autofocus 属性,使文 ...