MySQL中的树形查询
Posted robinson1988
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中的树形查询相关的知识,希望对你有一定的参考价值。
树形查询本质就是递归算法(自己调用自己),Oracle很早就支持了树形查询
mysql中可以使用 WITH RECURSIVE 来实现树形查询
比如在Oracle中scott账户下,找出员工编号为7369所有的上级:
SQL> select empno, ename, job, mgr, level
2 from emp
3 start with empno = 7369
4 connect by empno = prior mgr;
EMPNO ENAME JOB MGR LEVEL
----- ---------- --------- ----- ----------
7369 SMITH CLERK 7902 1
7902 FORD ANALYST 7566 2
7566 JONES MANAGER 7839 3
7839 KING PRESIDENT 4
在MySQL8.0.19中:
mysql> WITH RECURSIVE x(empno,ename,job,mgr,lv) AS
-> (SELECT empno,ename,job,mgr,1 lv from emp where empno=7369
-> UNION ALL
-> select t1.empno,t1.ename,t1.job,t1.mgr,lv+1 from emp t1,x where t1.empno=x.mgr
-> )
-> select * from x;
+-------+-------+-----------+------+------+
| empno | ename | job | mgr | lv |
+-------+-------+-----------+------+------+
| 7369 | SMITH | CLERK | 7902 | 1 |
| 7902 | FORD | ANALYST | 7566 | 2 |
| 7566 | JONES | MANAGER | 7839 | 3 |
| 7839 | KING | PRESIDENT | NULL | 4 |
+-------+-------+-----------+------+------+
4 rows in set (0.00 sec)
想不想成为SQL大神?想不想精通SQL优化,精通所有关系型数据库优化?
加我微信692162374 报名单独辅导 , 顺带我还可以教你Python,Oracle,MySQL,以及大数据
以上是关于MySQL中的树形查询的主要内容,如果未能解决你的问题,请参考以下文章