前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql自定义排序

mysql自定义排序

作者头像
陈灬大灬海
发布2020-01-19 20:27:00
1.2K0
发布2020-01-19 20:27:00
举报

场景

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

建表

代码语言:javascript
复制
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;

插入数据

代码语言:javascript
复制
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函数

代码语言:javascript
复制
SELECT * FROM `custom_sort` ORDER BY FIELd(type,1,3) desc,type

case when then

代码语言:javascript
复制
SELECT * FROM `custom_sort` ORDER BY CASE WHEN type= 3 THEN 0 WHEN type= 1 THEN 1 else 2 END ,type asc

查询结果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景
  • 建表
  • 插入数据
  • 表结构数据
  • 解决方案
    • field函数
      • case when then
        • 查询结果
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档