介绍一。需求
二。解决方案
这篇文章将为大家详细讲解有关如何在MySQL中给定父行找到所有子行,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
一。需求
找到直接及简介琼斯(即下属的下属)为琼斯工作的所有员工。
琼斯下属的员工列表如下所示:
±- - - - - -±- - - - - - + | |,ename lvl | ±- - - - - -±- - - - - - + | |,JONES 1 | | |,SCOTT 2 | | |,FORD 2 | | |,ADAMS 3 | | |,SMITH 3 | ±- - - - - -±——+
二。解决方案
能够移到数的绝对顶部和底部是非常有用的。
对于这个解决方案,不需要特殊的格式设置。目标只是返回位于员工琼斯下属的所有员工,其中包括琼斯自己。
这种类型的查询展示了递归SQL拓展的有用性,如Oracle和SQL Server的连接的/DB 2/MySQL 8.0的子句等。
with recursive emp2 (ename empno,级), ( SELECT ename empno, 1级 ,得到emp ,where ename =, & # 39;琼斯# 39; union select e1.ename e1.empno lvl + 1 emp2 ,得到emp e1, e2 ,where e1.mgr =e2.empno ) select ename lvl 得到emp2
<强>测试记录:强>
mysql>, with recursive emp2 (ename empno,级), →大敌;( ,→SELECT ename empno, 1级 →,得到emp ,→where ename =, & # 39;琼斯# 39; ,→union 所有 ,→select e1.ename e1.empno, lvl + 1 →大敌;得到emp e1, e2 emp2  ,→where e1.mgr =e2.empno ,→) ,→select ename lvl 得到emp2; + - - - - - - - - - - - - - + | |,ename lvl | + - - - - - - - - - - - - - + | |,JONES 1 | | |,SCOTT 2 | | |,FORD 2 | | |,ADAMS 3 | | |,SMITH 3 | + - - - - - - - - - - - - - + 5,rows set 拷贝;(0.01,sec)
关于如何在MySQL中给定父行找到所有子行就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。