MySQL 按指定字段自定义列表排序

MySQL 按指定字段自定义列表排序

问题描述

大家都知道, 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).

实际应用场景

假如一个实体,有多个状态值,各个货品的状态值都不一样,又不想直接倒序或顺序,那么当想根据实体状态中间位置排序时,根据mysql提供的方法:field(column,value1,value2,value3,......), 可满足当前需求.

SELECT * FROM MyTable

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

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

这里要注意一定要在where用in筛选要排序的字段,接着再使用FIELD这个字段去做自定义排序

相关推荐
天桥下的卖艺者8 小时前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
隔窗听雨眠8 小时前
AI原生数据库浪潮:国产数据库的架构重构与路径之争
数据库
数据库小学妹8 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
神龙天舞20019 小时前
MySQL 备库为什么会延迟好几个小时
android·数据库·mysql
丙氨酸長鏈11 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
独行侠影a11 小时前
APScheduler+Redis 分布式定时任务:解决多实例任务重复执行
数据库·redis·分布式
传说故事12 小时前
数据库中一些常用英文单词含义
数据库·oracle
夏贰四12 小时前
中小企业搭建业务中台如何控成本?业务中台轻量化落地分几步实施?
数据库·业务中台
林焱RPA12 小时前
影刀RPA200篇纪念版:最实用的20个自动化场景大盘点
数据库
名字还没想好☜12 小时前
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
java·数据库·golang·go·goroutine