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的 ...
随机推荐
- S8-codelab02
import news_cnn_model import numpy as np import os import pandas as pd import pickle import shutil i ...
- matrix矩阵变换参数图形化详解
- 20175213《Java程序设计》实验二Java面向对象程序设计实验报告
实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装,继承,多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 知识总结 1.伪代码 2.产品代码: ...
- uni-app 使用 iconfont
使用 uni-app 做项目时需要用到 iconfont.和 web 使用略有差别.谨以此记录. 因为 uni-app 不能使用本地字体图标库,所以不能直接下载使用. 1.将iconfont中需要的图 ...
- vue中的一些知识点--多看文档
重温vue,一些知识点简单记录. 1.我们都知道当数据变化时,视图会重新渲染.注意:只有当vue实例被创建时,data中存在的属性才是响应式的.后续新添加的属性不会触发视图变化. 使用 Object. ...
- cpu资源长期使用率过高导致系统内核锁问题
服务器跑大量高负载程序,会造成cpu soft lockup. 解决办法: #追加到配置文件中 echo 30 > /proc/sys/kernel/watchdog_thresh #查看 [r ...
- java operate
class OperateDemo { public static void main(String[] args) { /* + - * / %(取余数) */ int x = 2810; Syst ...
- React Router的Route的使用
Route 是 React Router中用于配置路由信息的组件,每当有一个组件需要根据 URL 决定是否渲染时,就需要创建一个 Route. 1) path 每个 Route 都需要定义一个 pat ...
- Django中把SQLite数据库转换为Mysql数据库的配置方法
我们在学习和开发Django的时候,一般是使用SQLite作为数据库.在正式讲网站部署上线是用MySQL数据库比较多.MySQL支持高并发的访问,而且相对于SQLite,MySQL性能更好.下面讲讲如 ...
- 微信小程序开发——点击防重的解决方案
对于一些涉及后端接口请求的单击事件,不论后端是否做了请求限制,前端还是有必要进行点击防重处理的. 这样既能减少对服务器端的压力,也能有效防止因重复请求而造成一些不可预期的异常. 尤其是接口请求结果处理 ...