需求:部门编号有1-1、1-5、1-8、2-15、2-5、1-46等等
需要排成1-1、1-5、1-8、1-46、2-5、2-15
分析:1.按“-”分割,先排“-”前面的部分,按长度排,再按大小排
2.排“-”后面的部分,按长度排,再按大小排

步骤:

  1. 创建数据库,创建表,添加数据

    2.sql语句
SELECT *
FROMdept
ORDER BY
LENGTH(SUBSTRING(dept_num,1,INSTR(dept_num, '-'))),
SUBSTRING(dept_num,1,INSTR(dept_num, '-')),
LENGTH(SUBSTRING(dept_num,(INSTR(dept_num, '-') + 1))),
SUBSTRING(dept_num,(INSTR(dept_num, '-') + 1));

3.执行结果

4.看一下这条sql语句的执行效率

全表扫描,而且用了filesort,性能低到了极点
该需求以后会更新高性能版本。

5.sql语句分析
第一次排序:LENGTH(SUBSTRING(dept_num,1,INSTR(dept_num, ‘-’)))
按“-”前面的长度排序,三位数肯定大于两位数,两位数肯定大于一位数
第二次排序:SUBSTRING(dept_num,1,INSTR(dept_num, ‘-’))
一位数、两位数、三位数依次比较升序
第三次排序:LENGTH(SUBSTRING(dept_num,(INSTR(dept_num, ‘-’) + 1)))
按“-”后面的长度排序,同第一次排序
第四次排序:SUBSTRING(dept_num,(INSTR(dept_num, ‘-’) + 1))
同第二次排序
注意:mysql中的下标从1开始;substring()函数含头不含尾。

sql脚本如果有需要,请重定向到:
https://download.csdn.net/download/hehuihh/11019048

MySQL之部门编号排序相关推荐

  1. mysql最高平均工资_mysql查询出平均工资最高的部门编号

    mysql查询出平均工资最高的部门编号 一.部门表 DROP TABLE IF EXISTS `depts`; CREATE TABLE `depts` ( `id` int(11) NOT NULL ...

  2. MySQL数据库(练习一: 提示:emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno所属部门编号) de)

    练习一: 提示: emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno所属部门编号) dept部门表(dep ...

  3. mysql部门人员排序设计_MySQL数据库访问性能优化

    MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...

  4. mysql员工表部门表_部门表 department 部门编号 dept_id 部门名称 汇总表

    有两张表 部门表  department  部门编号 dept_id 部门名称 dept_mement create table department( dept_id tinyint auto_in ...

  5. mysql学习笔记之排序查询和函数(进阶四)

    USE myemployees; #进阶四:排序查询() /* 语法: select 查询列表 from 表 order by 排序列表[asc|desc]asc升序desc降序,可不写,默认升序 / ...

  6. MySQL优化篇:排序分组优化

    文章目录 1.order by关键字排序优化 1.1 无过滤不索引 1.2 顺序错,必排序 1.3 方向反,必排序 1.4 索引的选择 1.5 using filesort 1.6 使用覆盖索引 1. ...

  7. mysql查询后从高到低排序_[MySQL基础]三、排序查询

    排序查询 语法: SELECT 查询列表 FROM 表 [WHERE 筛选条件] ORDER BY 排序列表 [ASC|DESC]; #[ ]中的内容表示可选 特点:asc代表的是升序,desc代表的 ...

  8. LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank)

    文章目录 1. 题目 2. 解题 1. 题目 Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId . +--- ...

  9. (四)MySQL员工部门查询

    建表脚本 -- 部门表 CREATE TABLE dept(deptno INT PRIMARY KEY AUTO_INCREMENT COMMENT '部门编号', -- 部门编号dname VAR ...

最新文章

  1. mysql用binlog恢复数据_mysql 利用 binlog 恢复数据
  2. CV进入三维时代!Facebook在ICCV 2021 发布两个3D模型,自监督才是终极答案?
  3. 将磁盘上的一个文本文件的内容复制到另一个文件中
  4. 网站优化也逃不过“细节决定成败”定律
  5. python判断哪个数最小_怎么用python比较三个数大小
  6. mysql三范式_MySQL设计之三范式的理解
  7. 史上最轻量​!阿里新型单元测试Mock工具开源了
  8. jquery去掉数组最后一个元素_从数组中删除最后一项
  9. python工业自动化镜头_ELVIS III + Python | 如何用Python对ELVIS III进行编程开发
  10. 为GridView-Delete列添加确认对话框(2种方法)
  11. 通过JDK动态代理实现拦截器
  12. 如何更改gnome-screenshot的默认的保存路径?
  13. 事件mousseenter和mouseover的区别
  14. 锐捷交换机查看配置命令
  15. 【网络工程】交换机各层作用,100路监控摄像是否_该采用核心交换机吗
  16. 芭蕉树上第十七根芭蕉-- 隐式转换
  17. 引气管理计算机失效,TAT信号无效导致ND上TAS-显示消失B737系列机务在线 - 认真、负责、细致 我们秉承的理念...
  18. 2011-2012世界大学排行榜(前200)
  19. html盒子模型 正方形嵌套,前端box(盒子嵌套)
  20. [转贴]周星驰经典对白

热门文章

  1. python 调用 Intel realsense D415i摄像头
  2. 提名推荐!15个2019年最佳CSS框架
  3. #DAYU200#短信倒计时
  4. 汽车java歌曲_车载音乐推荐 50首适合开车听的歌曲 2019车载歌曲 开车必备100首...
  5. 小米12回收能值多少钱
  6. 抽象代数之12阶群的五种结构
  7. GMP认证|企业需依据产品特性制定卫生标准程序
  8. 数商云采购管理系统:采购业务模式介绍,助力汽车零部件企业采购业务高效协同
  9. 博文推荐|通过 Apache Pulsar + ScyllaDB 构建实时聊天消息流
  10. 算法之路_11、优化后的快速排序