问题描述

大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例, 下同):

SELECT * FROM `MyTable`

WHERE `id` IN (1, 7, 3, 5)

ORDER BY `id` ASC

降序排列的 SQL 为:

SELECT * FROM `MyTable`

WHERE `id` IN (1, 7, 3, 5)

ORDER BY `id` DESC

有时以上排序并不能满足我们的需求. 例如, 我们想要按 id 以 5, 3, 7, 1 的顺序排列, 该如何实现. 这也是很多国内外同行经常遇到的问题之一.

下面我们给出按表中某字段, 以我们想要的列表方式排序的解决方案.

解决方案

用"按字段排序" (ORDER BY FIELD).

语法

ORDER BY FIELD(`id`, 5, 3, 7, 1)

要注意的是, FIELD 后面是没有空格的.

因此, 完整的 SQL 为:

SELECT * FROM `MyTable`

WHERE `id` IN (1, 7, 3, 5)

ORDER BY FIELD(`id`, 5, 3, 7, 1)

常见应用

SELECT * FROM `MyTable`

WHERE `name` IN ('张三', '李四', '王五', '孙六')

ORDER BY FIELD(`name`, '李四', '孙六', '张三', '王五')

参考资料

来源:http://www.php42.com/index.php/database/35-sql/237-mysql-order-by-list

mysql 预留一个自定义字段_MySQL 按指定字段自定义列表排序 | DevOps相关推荐

  1. mongo 查询显示字段_MongoDB查询指定字段(field)返回指定字段的方法

    使用MongoDB的时候需要只查询指定的字段进行返回,也就是类似mysql里面的 SELECT id,name,age 这样而不是SELECT *.在MongoDB里面映射(projection)声明 ...

  2. mysql查询字段不为数字_MySQL查询指定字段不是数字与逗号的sql

    核心sql语句 MySQL查询不包含数字的语句: SELECT * FROM test WHERE `name` regexp '[^0-9]'; MySQL查询纯数字的语句: SELECT * FR ...

  3. mysql在线增加字段_MySQL在线加字段实现原理

    作者:vinchen 腾讯互娱内部维护了一个TMySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能.该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下 ...

  4. mysql如何加个字段_mysql如何添加字段 | mysql添加字段

    alter table `sysinfo` add `fact_num` int(11); 添加字段并设置默认值: alter table `channel` add `needrestart` in ...

  5. MySQL的一个表最多可以有多少个字段

    原文:http://mp.weixin.qq.com/s?__biz=MzAwMjkyMjEwNg==&mid=2247483785&idx=1&sn=1d90a44915d1 ...

  6. mysql自增字段_MySQL自增字段的常用语句

    学习MySQL数据库,MySQL自增字段是最基础的部分之一,下面为您介绍一些MySQL自增字段的常用语句,希望对您学习MySQL自增字段能些许帮助. 1.创建表格时添加: create table t ...

  7. mysql 中 一个汉字吗_MySQL 中一个汉字占多少存储?

    MySQL 中一个汉字占多少存储? 1. 一个汉字占多少长度与编码有关: UTF8: 一个汉字 = 3 个字节 GBK: 一个汉字 = 2 个字节 2.varchar(n)能存储几个汉字? varch ...

  8. mysql添加时间默认值_mysql 创建时间字段添加默认值

    在创建时间字段的时候 例如:字段  create_time   默认值可以设置为CURRENT_TIMESTAMP插入数据时候会自动添加时间,默认值为当前时间 update_time  默认值可以设置 ...

  9. mysql自增列语句_MySQL自增字段的常用语句

    学习MySQL数据库,MySQL自增字段是最基础的部分之一,下面为您介绍一些MySQL自增字段的常用语句,希望对您学习MySQL自增字段能些许帮助. 1.创建表格时添加: create table t ...

最新文章

  1. 找工作实用书《LeetCode 题解》(附pdf)
  2. 第八周项目三-指向学生类的指针
  3. 阿里云Redis (安装包安装篇)
  4. 【JAVA编码】 JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换
  5. hibernate session的load和get方法
  6. linux ping不允许的操作,linux – ping:sendmsg:不允许操作(有时)
  7. 使用 Github Actions artifact 在 workflow job 之间共享数据
  8. HTML5获取地理位置定位信息
  9. 计算机科学与技术文理兼收吗,哪些专业是文理兼收的专业?
  10. SAP-BW数据仓库增量更新
  11. HDU1492/The number of divisors(约数) about Humble Numbers
  12. 通过bat文件批量判断url地址的状态
  13. 查普曼-科莫高洛夫方程Chapman–Kolmogorov equation
  14. flutter 使用阿里图标
  15. Web前端工程师工资逐年增长,背后有哪些因素?
  16. Matlab导入数据(一定有用!!)
  17. JTF的Unable to invoke request异常或Unable to find a MessageBodyReader of content-type application..异常详解
  18. 智能家居APP的竞品分析报告(米家)
  19. Springboot源码解读
  20. 使用MQTTX 建立连接报Error: Connection refused: Not authorized 未授权

热门文章

  1. 基于Docker方式实现Elasticsearch集群
  2. 微信JSAPI支付,报错当前页面的URL未注册
  3. Android 打开另一个APP,并传参
  4. node 根据图片img url 获取 base64
  5. 新的编程语言研发契机思考
  6. 使用Flex生成GUID
  7. 数据结构实验三 树的遍历生成树
  8. 你还不会手写SpringBoot启动器吗
  9. string容量JAVA_java的StringBuilder类的长度和容量有什么区别呢?
  10. redis php 性能测试工具,redis性能测试与客户端连接详解