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中的视图

    详解MySQL中的视图

    视图是一个虚拟表,非真实存在,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用视图名称即可获取结果集,并可以将其当作表来使用,这篇文章主要介绍了MySQL的视图,需要的朋友可以参考下
    2022-12-12
  • MySQL查看和修改事务隔离级别的实例讲解

    MySQL查看和修改事务隔离级别的实例讲解

    在本篇文章里小编给大家整理的是关于MySQL查看和修改事务隔离级别的实例讲解,有兴趣的朋友们学习下。
    2020-03-03
  • SQL执行步骤的具体分析

    SQL执行步骤的具体分析

    这篇文章主要介绍了SQL执行步骤的具体分析的相关资料,希望通过本文能帮助到大家,让大家理解掌握SQL是如何执行的,需要的朋友可以参考下
    2017-10-10
  • Redis什么是热Key问题以及如何解决热Key问题

    Redis什么是热Key问题以及如何解决热Key问题

    这篇文章主要介绍了Redis什么是热Key问题以及如何解决热Key问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • mysql数据库常见的优化操作总结(经验分享)

    mysql数据库常见的优化操作总结(经验分享)

    这篇文章主要给大家介绍了关于mysql数据库常见的优化操作,文章总结的都是个人日常开发使用mysql数据库的经验所得,其中包括Index索引、少用SELECT*、EXPLAIN SELECT以及开启查询缓存等相关资料,相信会对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • mysql主从同步原理及应用场景示例详解

    mysql主从同步原理及应用场景示例详解

    这篇文章主要为大家介绍了mysql主从同步原理及应用场景示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • MySQL中sum函数使用的实例教程

    MySQL中sum函数使用的实例教程

    这篇文章主要给大家介绍了关于MySQL中sum函数使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • MySQL主从复制之半同步semi-sync replication

    MySQL主从复制之半同步semi-sync replication

    这篇文章主要介绍了MySQL主从复制之半同步semi-sync replication,半同步相对于异步复制而言,提高了数据的安全性,同时也造成了一定程度的延迟,这个延迟最少是一个TCP往返的时间。所以,半同步复制最好在低延时的网络中使用,下文详细内容,需要的小伙伴可以参考一下
    2022-02-02
  • mysql5.7安装教程(windows)

    mysql5.7安装教程(windows)

    这篇文章主要为大家详细介绍了windows下mysql5.7安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • MySQL中join查询的深入探究

    MySQL中join查询的深入探究

    数据库中的JOIN称为连接,连接的主要作用是根据两个或多个表中的列之间的关系,获取存在于不同表中的数据,下面这篇文章主要给大家介绍了关于MySQL中join查询的深入探究,需要的朋友可以参考下
    2022-11-11

最新评论