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

相关推荐
裴东青1 小时前
ProxySQL实现MySQL主从集群的读写分离
数据库·mysql·adb
handler011 小时前
【MySQL】教你库与表的增删查改操作(基础)
运维·数据库·笔记·sql·mysql·数据·分析
姚不倒2 小时前
从零实现一个基于 Ollama + Go + MySQL 的 Text-to-SQL 智能体(M1 实战)
sql·mysql·云原生·golang
染指11102 小时前
9.LangChain框架(实现RAG)
数据库·人工智能·算法·机器学习·ai·大模型
2401_873479403 小时前
主流IP离线库(IP数据云、纯真、IPIP.NET)怎么选?全面对比分析
服务器·网络·数据库
毋语天3 小时前
Redis 零基础实战指南:从核心原理到生产落地的完整路线
数据库·redis·缓存
weixin_408318043 小时前
教育行业直播系统搭建指南
java·大数据·数据库
yuyuyui3 小时前
Mysql事物的持久性及原子性
mysql·.net core
それども4 小时前
redis scan和keys对比
数据库·redis·缓存
basketball6164 小时前
SQL 基础面试考点总结
数据库·sql·面试