gpt4 book ai didi

MySQL中给定父行找到所有子行的解决方案

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章MySQL中给定父行找到所有子行的解决方案由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言 。

备注:测试数据库版本为MySQL 8.0 。

如需要scott用户下建表及录入数据语句,可参考

scott建表及录入数据sql脚本 。

一.需求 。

找到直接及简介(即JONES下属的下属)为JONES工作的所有员工.

JONES下属的员工列表如下所示

?
1
2
3
4
5
6
7
8
9
± ------±-----+
| 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子句等.

?
1
2
3
4
5
6
7
8
9
10
11
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

测试记录

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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给定父行找所有子行内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/u010520724/article/details/114128041 。

最后此篇关于MySQL中给定父行找到所有子行的解决方案的文章就讲到这里了,如果你想了解更多关于MySQL中给定父行找到所有子行的解决方案的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com