这篇文章将为大家详细讲解有关如何在MySQL中给定父行找到所有子行,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一.需求找到直接及简介(即JONES下属的下属)为JONES工作的所有员工。J
这篇文章将为大家详细讲解有关如何在MySQL中给定父行找到所有子行,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
找到直接及简介(即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 ALLselect 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中给定父行找到所有子行就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
--结束END--
本文标题: 如何在MySQL中给定父行找到所有子行
本文链接: https://lsjlt.com/news/247549.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0