如何在MySQL中给定父行找到所有子行

  介绍

这篇文章将为大家详细讲解有关如何在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中给定父行找到所有子行就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

如何在MySQL中给定父行找到所有子行