专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

MySQL自定义排序

需求

有些时候我们排序不是单纯的按照升序或者降序,而是按照如 id 以 6, 2, 5, 1的顺序排序,该如何实现呢?

解决版本

初始化表

create table t(id int primary key, status int);
insert into t values(1,1);
insert into t values(2,2);
insert into t values(3,3);
insert into t values(4,4);
insert into t values(5,5);
insert into t values(6,6);

使用如下查询即可

SELECT * FROM `t` 
WHERE `id` IN (6, 2, 5, 1)   
ORDER BY FIELD(`id`, 6, 2, 5, 1)   //也可以 ORDER BY FIELD(`id`, 1,5,2,6) desc

另外除了使用field,还可以用locate和instr函数进行排序:

SELECT * FROM t ORDER BY locate(id,6, 2, 5, 1);
SELECT * FROM t ORDER BY INSTR(6, 2, 5, 1,id);

延伸

如果去掉in条件查询结果会是什么样的呢?

SELECT id FROM `t` 
ORDER BY FIELD(`id`, 6, 2, 5, 1)

结果是:
3, 4, 6, 2, 5, 1

SELECT * FROM t 
ORDER BY INSTR(`id`,1,5,2,6) desc;

结果是
6 2 5 1 3 4 

更多MySQL排序请查看 MySQL排序内部原理探秘

文章永久链接:https://tech.souyunku.com/45617

未经允许不得转载:搜云库技术团队 » MySQL自定义排序

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们