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

相关推荐
gQ85v10Db14 分钟前
Redis分布式锁进阶第二十二篇
数据库·redis·分布式
薪火铺子14 分钟前
MySQL 锁机制与死锁分析深度解析
数据库·mysql
千百元17 分钟前
mysql5.7 定时删除表数据
mysql
曹牧1 小时前
Oracle:将包含属性(Attributes)的 XML 数据解析为表格数据
xml·数据库·oracle
@小匠1 小时前
Redis RDB持久化之 save 自动备份检查机制
数据库·redis·bootstrap
折哥的程序人生 · 物流技术专研1 小时前
从“卡死”到“跑通”:WMS机器学习全流程实战排坑记
数据库·人工智能·机器学习
上海云盾商务经理杨杨1 小时前
Web渗透核心漏洞:SQL注入漏洞测试与修复实战
数据库·sql·安全
2303_821287382 小时前
c++ RAII机制详解 c++如何利用RAII管理资源
jvm·数据库·python
小宇的天下2 小时前
Calibre 3Dstack --每日一个命令day25【no_trace】(3-25)
数据库
m0_624578593 小时前
C#怎么获取U盘的插拔事件_C#如何重写WndProc捕获消息【进阶】
jvm·数据库·python