首页 > 数据库 >MySQL字段按照特定规则排序

MySQL字段按照特定规则排序

时间:2024-02-22 11:11:54浏览次数:24  
标签:status product code ASC 字段 MySQL 排序 order

分享一下数据库字段排序需求不是按照自然的顺序进行升序排序;

需求:工单状态,按照生产中>挂起>待生产>已完成进行排序。

解决方法:

1、工单状态枚举对应可以设置为:

生产中:10  , 挂起: 20:  ,待生产: 30 , 已完成 :40

数据库where 条件后面可以设置为:order by order_status asc。

这种方法是最简单,但是很多时候,工单状态对应枚举值已经设置好了,不能随意修改,无法按照现有状态去升序降序。

以下工单状态对应枚举是:

待生产:10  ,挂起: 20  ,生产中: 30, 已完成 : 40

2、可以用case when的方式

SELECT
	a.*, c.product_name 
FROM work_order a LEFT JOIN product c ON a.product_code = c.product_code AND c.del_flag = 0 
WHERE
	a.del_flag = 0  ORDER BY
	a.audit_status ASC,
  (CASE  WHEN a.order_status =30 THEN 1
	WHEN a.order_status =20 THEN 2
	WHEN a.order_status =10 THEN 3 
	WHEN a.order_status =40 THEN 4 
	ELSE 5
  END) ASC,
	a.start_time ASC; 

这样也是可以进行排序

3、采用field方式

SELECT
	a.*, c.product_name 
FROM work_order a LEFT JOIN product c ON a.product_code = c.product_code AND c.del_flag = 0 
WHERE
	a.del_flag = 0  ORDER BY
	a.audit_status ASC,
   field(a.order_status,30,20,10,40) ,
	a.start_time ASC; 

这个也可以进行排序,不过貌似这种方式只能作用于MySQL数据库。别的数据库貌似不行

 

标签:status,product,code,ASC,字段,MySQL,排序,order
From: https://www.cnblogs.com/qwg-/p/18026898

相关文章

  • 数据库表字段命名规范
    摘要:当前研发工作中经常出现因数据库表、数据库表字段格式不规则而影响开发进度的问题,在后续开发使用原来数据库表时,也会因为数据库表的可读性不够高,表字段规则不统一,造成数据查询,数据使用效率低的问题,所以有必要整理出一套合适的数据库表字段命名规范来解决优化这些问题。本文......
  • MySQL-15.存储过程和函数
    C-15.存储过程和函数MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可。1.存储过程概述1.1理解含义:存储过程的英文是StoredProcedure。它的思想......
  • 初三年后集训测试---T1排序
    初三年后集训测试$T1$排序$$HZOI$$·题意:给定\(4n\)个整数,求:\[\max\{\sum_{i=1}^{4n}(A_{i,1}\timesA_{i,2}-A_{i,3}\timesA_{i,4})\}\]其中存在\(n\)个这样的集合\(a\),并两两互不相交。·题解:先排序,再将区域划分为两块,从\(2n\)处划分。然后:大的那......
  • # 代码随想录算法训练营day01 | leetcode 704. 二分查找、35.搜索插入位置、34.在排序
    题目链接:704.二分查找-简单题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示......
  • 【C++】编写一个具有老式风格接口的函数,其原型如下:int reduce(long arr[], int n)。实
    #include<iostream>#include<string>usingnamespacestd;intreduce(longarr[],intn){sort(arr,arr+n);autostr=unique(arr,arr+n);returnstr-arr;}intmain(){longarr[10]={15,8,5,6,11,11,6,6,198,50};......
  • MySQL学习之触发器
    介绍触发器是与表有关的数据库对象,指在insert/update/delete之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数......
  • Java人力资源管理系统源码(含数据库)-springboot+vue+mysql
    EHR人力资源管理系统是一种利用现代技术,如云计算、大数据等,来实现企业人力资源信息电子化、流程自动化的系统。它覆盖了人力资源管理的各个方面,从招聘、考勤、绩效到薪酬、社保公积金等,为企业提供一站式的解决方案。​1.招聘管理:-职位发布:系统支持在线发布职位信息,吸引候选人......
  • MySQL语法
    MySQL语法MySQL的连接mysql-uyour_username-p--连接数据库SHOWDATABASES;--列出所有可用的数据库USEyour_database;--选择要使用的数据库SHOWTABLES;--列出所选数据库中的所有的表EXIT/QUIT;--退出mysqlMySQL创建数据库CREATEDATABASE数据库名;......
  • SpringBoot+MybatisPlus+Mysql实现批量插入万级数据多种方式与耗时对比
    场景若依前后端分离版本地搭建开发环境并运行项目的教程:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662若依前后端分离版如何集成的mybatis以及修改集成mybatisplus实现Mybatis增强:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1362030......
  • mysql服务启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序启
    报错如下: 解决办法:1.开始->cmd->以管理员身份运行目录切换到C:\ProgramFiles\MySQL\MySQLServer5.7\bin2.运行mysqld--initialize-insecure--user=mysql说明:初始化后,root密码位空3.运行netstartmysql 三、修改mysql57的root密码[2]四、参考[1] mysql服务启......