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

相关推荐
一枚正在学习的小白14 小时前
prometheus监控mysql服务
linux·运维·mysql·prometheus
彬鸿科技14 小时前
【SDR课堂第42讲】RFSOC开发入门之开发环境搭建(三)
linux·运维·数据库·ubuntu·postgresql·软件无线电·软无
soft200152514 小时前
MySQL Buffer Pool深度解析:当缓存页不足时如何基于LRU算法进行淘汰
mysql
九章-14 小时前
金仓数据库助力中国石油安全环保技术研究院安全生产智能管控系统全面实现数据库国产化替代
数据库·安全
陌路2014 小时前
redis 发布订阅功能
数据库·redis·缓存
丁丁丁梦涛14 小时前
navicat跨服务器连接MySQL数据库
服务器·数据库·mysql
tgethe14 小时前
mysql-索引详解
数据库·mysql
一个天蝎座 白勺 程序猿14 小时前
Apache IoTDB(11):分段聚合深度解析——从原理到实战的完整指南
数据库·apache·iotdb
Java Fans14 小时前
PyQt实现SQLite数据库操作案例详解
数据库·sqlite·pyqt
子夜江寒14 小时前
MySQL 学习
数据库·mysql