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

相关推荐
TDengine (老段)24 分钟前
昆仑数智选择 TDengine TSDB,提升页岩气生产运行可视化与精细化管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
陆水A29 分钟前
【问数系统】SQL跑对了图表却空了?打通问数系统最后1公里的3个API坑
大数据·数据库·自然语言处理·big data·etl工程师
海外数字观察家1 小时前
品未云:泰国华商批发零售一体化 ERP,破解本土软件适配难题|CSDN 技术分享
网络·数据库·人工智能
万亿少女的梦1681 小时前
基于Spring Boot、Vue与MySQL的高校实习信息管理系统设计与实现
spring boot·mysql·vue·权限管理·restful api
陳陈陳2 小时前
LLM的"消化系统":一文讲透RAG文档加载与智能切割
数据库·langchain·llm
IvorySQL2 小时前
云环境下PostgreSQL的Cgroup内存管理实践
java·数据库·postgresql
霸道流氓气质2 小时前
CodeBuddy中配置Redis MCP 连接与排错实战
数据库·redis·缓存
王琦03182 小时前
第一章 数据库-理论基础
数据库
数行拙笔2 小时前
Redis---hash类型
数据库·redis·哈希算法
哈__2 小时前
MCP 协议落地实践:国产化数据库 AI 一站式 SQL 诊断调优方案
数据库·人工智能·sql