MySQL中给定父行找到所有子行的解决方案

 更新时间:2021年02月28日 15:14:42   作者:只是甲  
这篇文章主要给大家介绍了关于MySQL中给定父行找到所有子行的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

备注:测试数据库版本为MySQL 8.0

如需要scott用户下建表及录入数据语句,可参考:

scott建表及录入数据sql脚本

一.需求

找到直接及简介(即JONES下属的下属)为JONES工作的所有员工。

JONES下属的员工列表如下所示:

±------±-----+
| ename | lvl |
±------±-----+
| JONES | 1 |
| SCOTT | 2 |
| FORD | 2 |
| ADAMS | 3 |
| SMITH | 3 |
±------±-----+

二.解决方案

能够移到数的绝对顶部和底部是非常有用的。

对于这个解决方案,不需要特殊的格式设置。目标只是返回位于员工JONES下属的所有员工,其中包括JONES自己。

这种类型的查询展示了递归SQL拓展的有用性,如Oracle的connect by和SQL Server/DB 2/MySQL 8.0的with子句等。

with recursive emp2(ename,empno,lvl) as
(
SELECT ename,empno,1 lvl
 from emp 
 where ename = 'JONES'
union ALL
select e1.ename,e1.empno,lvl + 1
 from emp e1,emp2 e2
 where e1.mgr = e2.empno
)
select ename,lvl from emp2

测试记录:

mysql> with recursive emp2(ename,empno,lvl) as
 -> (
 -> SELECT ename,empno,1 lvl
 -> from emp
 -> where ename = 'JONES'
 -> union ALL
 -> select e1.ename,e1.empno,lvl + 1
 -> from emp e1,emp2 e2
 -> where e1.mgr = e2.empno
 -> )
 -> select ename,lvl from emp2;
+-------+------+
| ename | lvl |
+-------+------+
| JONES | 1 |
| SCOTT | 2 |
| FORD | 2 |
| ADAMS | 3 |
| SMITH | 3 |
+-------+------+
5 rows in set (0.01 sec)

总结

到此这篇关于MySQL中给定父行找到所有子行的文章就介绍到这了,更多相关MySQL给定父行找所有子行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL里实现类似SPLIT的分割字符串的函数

    MySQL里实现类似SPLIT的分割字符串的函数

    SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦
    2012-09-09
  • MySQL使用组合查询的示例代码

    MySQL使用组合查询的示例代码

    本文主要介绍了MySQL使用组合查询的示例代码,如何使用UNION操作符来组合SELECT语句,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • linux下使用RPM安装mysql5.7.17

    linux下使用RPM安装mysql5.7.17

    这篇文章主要为大家详细介绍了linux下使用RPM安装mysql5.7.17的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Mysql中的find_in_set的使用方法介绍

    Mysql中的find_in_set的使用方法介绍

    Mysql中的find_in_set的使用方法介绍,需要的朋友可以参考一下
    2013-03-03
  • Windows下mysql5.7.18安装配置教程

    Windows下mysql5.7.18安装配置教程

    这篇文章主要为大家详细介绍了Windows下mysql5.7.18安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Win10下mysql 8.0.20 安装配置方法图文教程

    Win10下mysql 8.0.20 安装配置方法图文教程

    这篇文章主要为大家详细介绍了Win10下mysql 8.0.20 安装配置方法图文教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • MySQL8.0 Undo Tablespace管理详解

    MySQL8.0 Undo Tablespace管理详解

    本文主要介绍了MySQL8.0 Undo Tablespace管理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • RR与RC隔离级别下索引和锁的测试脚本示例代码

    RR与RC隔离级别下索引和锁的测试脚本示例代码

    这篇文章主要给大家介绍了关于RR与RC隔离级别下索引和锁的测试脚本的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Mysql 5.7.19 winx64 ZIP Archive 安装及使用过程问题小结

    Mysql 5.7.19 winx64 ZIP Archive 安装及使用过程问题小结

    本篇文章给大家介绍了mysql 5.7.19 winx64 ZIP Archive 安装及使用过程问题小结,需要的朋友可以参考下
    2017-07-07
  • MySQL 5.5.x my.cnf参数配置优化详解

    MySQL 5.5.x my.cnf参数配置优化详解

    今天正好看到一篇有关my.cnf优化的总结,虽然还没经过我自己的实践检验,但从文章内容来说已经写的很详细了(当然,事实上下面这篇文章很多地方只是翻译了my.cnf原始配置文件的说明,呵呵),所以特地转载收藏一下
    2015-08-08

最新评论