MySQL自定义排序函数FIELD()
2016-04-20 09:26
691 查看
转载:http://blog.tanteng.me/2013/11/mysql-order-by-field/
MySQL可以通过field()函数自定义排序,格式:field(value,str1,str2,str3,str4),value与str1、str2、str3、str4比较,返回1、2、3、4,如遇到null或者不在列表中的数据则返回0. 这个函数好像Oracle中没有专门提供(也可能是我没有用到),不过自己实现这样一个函数还是比较简单的。
mysql> select * from 表名 order by field(id,4,2,3,1);
+——–+——–+————+——-+
| id | name
+——–+——–+————+——-+
| 4 |
| 2 |
| 3 |
| 1 |
+——–+—— -+————+——-+
那么它就会按照id为4,2,3,1的顺序排序
根据id字段自定义排序
mysql> select * from 表名 order by field(id,1,4,2,3) desc;
+——–+——–+————+——-+
| id | name
+——–+——–+————+——-+
| 3 |
| 2 |
| 4 |
| 1 |
+——–+—— -+————+——-+
根据wp_posts表ID字段自定义排序:
MySQL
MySQL可以通过field()函数自定义排序,格式:field(value,str1,str2,str3,str4),value与str1、str2、str3、str4比较,返回1、2、3、4,如遇到null或者不在列表中的数据则返回0. 这个函数好像Oracle中没有专门提供(也可能是我没有用到),不过自己实现这样一个函数还是比较简单的。
mysql> select * from 表名 order by field(id,4,2,3,1);
+——–+——–+————+——-+
| id | name
+——–+——–+————+——-+
| 4 |
| 2 |
| 3 |
| 1 |
+——–+—— -+————+——-+
那么它就会按照id为4,2,3,1的顺序排序
根据id字段自定义排序
mysql> select * from 表名 order by field(id,1,4,2,3) desc;
+——–+——–+————+——-+
| id | name
+——–+——–+————+——-+
| 3 |
| 2 |
| 4 |
| 1 |
+——–+—— -+————+——-+
根据wp_posts表ID字段自定义排序:
MySQL
1 2 3 | SELECT wp_posts.ID FROM wp_posts WHERE wp_posts.ID IN (4687,4728,4730,4740) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY FIELD( wp_posts.ID, 4687,4728,4730,4740 ) LIMIT 0, 20 |
相关文章推荐
- webstorm 连接mysql
- MYSQL中日期与字符串间的相互转换
- MySql 的ON DUPLICATE KEY UPDATE函数(有记录就更新,没记录就插入)
- powerdesigner设置mysql唯一键,非主键
- mysql DATE_ADD DATE_SUB
- mysql触发器不支持动态sql
- mysql中GROUP BY结合GROUP_CONCAT的使用
- MySQL数据类型详解
- Mysql 字段类型属性
- mysql JDBC驱动下载
- mysql函数concat与group_concat使用说明
- MySQL的root密码忘记怎么办 修改root密码的方式
- 快速实现MySQL的部署以及一机多实例部署
- MySQL分页优化
- 如何恢复MySQL主从数据一致性
- 解决MySQL Sending data导致查询很慢问题的方法与思路
- MYSQL导入导出sql文件简析
- MySQL乱码问题终极指南
- mysql数据库权限查看以及管理
- mysql 1449错误