如何在MySQL中给定父行找到所有子行-创新互联

这篇文章将为大家详细讲解有关如何在MySQL中给定父行找到所有子行,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创新互联建站主营千山网站建设的网络公司,主营网站建设方案,重庆APP软件开发,千山h5小程序制作搭建,千山网站营销推广欢迎千山等地区企业咨询

一.需求

找到直接及简介(即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中给定父行找到所有子行-创新互联
本文URL:http://bzwzjz.com/article/cdojhg.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 企业网站设计 app网站建设 自适应网站设计 高端网站建设 网站建设方案 古蔺网站建设 成都企业网站制作 企业网站建设 四川成都网站设计 手机网站建设 成都网站建设公司 专业网站设计 成都网站设计公司 商城网站建设 成都营销网站制作 四川成都网站建设 成都网站设计 网站制作公司 成都响应式网站建设 成都定制网站建设 做网站设计 温江网站设计