mysql自定义排序

Posted 陈灬大灬海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql自定义排序相关的知识,希望对你有一定的参考价值。

场景

业务需要,优惠券列表要求按类型进行排序,但是,类型并不是顺序的,即order by是解决不了问题的

建表

CREATE TABLE `custom_sort`  (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci NOT NULL,
  `type` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `so`(`type`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_german2_ci ROW_FORMAT = Dynamic;

插入数据

INSERT INTO `custom_sort` VALUES (1, \'刘一\', 1);
INSERT INTO `custom_sort` VALUES (2, \'陈二\', 2);
INSERT INTO `custom_sort` VALUES (3, \'张三\', 3);
INSERT INTO `custom_sort` VALUES (4, \'李四\', 2);
INSERT INTO `custom_sort` VALUES (5, \'王五\', 5);
INSERT INTO `custom_sort` VALUES (6, \'赵六\', 0);
INSERT INTO `custom_sort` VALUES (7, \'孙七\', 7);

表结构数据

解决方案

field函数

SELECT * FROM `custom_sort` ORDER BY FIELd(type,1,3) desc,type

case when then

SELECT * FROM `custom_sort` ORDER BY CASE WHEN type= 3 THEN 0 WHEN type= 1 THEN 1 else 2 END ,type asc

查询结果

以上是关于mysql自定义排序的主要内容,如果未能解决你的问题,请参考以下文章

MySql 自定义排序

VSCode自定义代码片段(vue主模板)

VSCode自定义代码片段——声明函数

MySQL 根据自定义规则排序

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段——git命令操作一个完整流程