暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL如何对数据库状态值指定排序

程序员舒克 2021-07-08
1129

点击上方蓝色字体关注公众号

问题描述:一张Mysql表中有多种状态,我想按指定的状态排序

    1:"待上架"
    2:"预约上架"
    3:"出售中"
    4:"预约下架"
    5:"下架"
    6:"已售罄"


    排序规则并不是 order by status desc 也不是 asc 

    而是按照  出售中 > 待上架 > 预约上架 >  预约下架 >下架   的顺序排序

      CREATE TABLE `product` (
      `id` bigint(20) NOT NULL COMMENT '主键',
      `name` varchar(50) NOT NULL COMMENT 'SPU 名字',
        `descs` varchar(50DEFAULT '' COMMENT '商品描述',
      `product_no` varchar(60) NOT NULL COMMENT '商品编号',
        `status` tinyint(2NOT NULL COMMENT '状态(1.待上架 2.预约上架 3.出售中 4. 预约下架 5.下架 6.已售罄)',
      `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
      `create_by` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人(-1代表未设置 0 代表没有)',
      `update_by` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人'
      PRIMARY KEY (`id`)
      ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';

      数据如下:

      此时应当使用field函数:

        selectfrom product_spu order by field(status,3,1,2,4,5)

        输出结果:

        按照后面的值正序排列,无匹配的将会放在最前面(比如6)、如果倒序排序的话,6会在最后面

        文章转载自程序员舒克,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论