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这个字段去做自定义排序

相关推荐
夜雪一千12 小时前
MySQL查询条件的顺序是否影响查询效率
数据库·mysql
X-⃢_⃢-X12 小时前
十、Redis之布隆过滤器
数据库·redis·缓存
Nturmoils12 小时前
订单号查出了三笔,我以为是数据脏了,其实是自己写错了
数据库
ZKNOW甄知科技12 小时前
燕千云深度集成飞书:以AI之力,开启无感IT运维体验
大数据·运维·网络·数据库·人工智能·低代码·集成学习
TDengine (老段)12 小时前
TDengine 免费版说明
java·大数据·数据库·物联网·时序数据库·tdengine
汉知宝科技12 小时前
历史案件数据迁移:知识产权管理系统落地的第一道门槛
大数据·数据库
这就是佬们吗12 小时前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
吴声子夜歌12 小时前
MongoDB 4.x——SpringBoot框架整合
数据库·spring boot·mongodb
凤山老林13 小时前
MySQL“读已提交“并非万能药:深度解析RC隔离级别的盲区与适用边界
数据库·mysql
Database_Cool_13 小时前
阿里云 Tair(企业级内存数据库)vs 腾讯云 Redis 云缓存深度对比:性能/数据结构/成本全维度 Benchmark
数据库·阿里云·缓存