mysql查询一棵树,一级→二级→三级→四级的形式查询出结果?

数据库里面一张表存了一棵树,存储结构为菜单栏的1,2,3,4级菜单,以id,par_id
关联,怎么以字段name达到查询出结果一级→二级→三级→四级的形式查询出结果?

7个回答

select
q.func_id,q.func_name,q.par_func_id,
case
when
exists(select 1 from quota_category c where q.func_id=c.par_func_id)
then
1 else 0 end isParent
from 表名 q

mysterychen
mysterychen 2、SELECT b.par_name,a.par_name,a.son_name FROM tc_func_tree a LEFT JOIN tc_func_tree b ON a.par_id = b.son_id
接近 2 年之前 回复
mysterychen
mysterychen 两句sql分别为,1、create table tc_func_tree select a.FUNC_ID AS son_id,a.FUNC_NAME AS son_name,b.FUNC_ID as par_id,b.FUNC_NAME as par_name from tc_func a LEFT JOIN tc_func b ON a.PAR_FUNC_ID=b.FUNC_ID
接近 2 年之前 回复
mysterychen
mysterychen 您好,我得到想要的结果了,但是用了两段sql,您能帮我看看能不能把两句sql优化为一句吗?感谢
接近 2 年之前 回复
mysterychen
mysterychen 我刚才尝试用select e.FUNC_ID,e.FUNC_NAME,l.FUNC_NAME from tc_func e LEFT JOIN tc_func l ON e.PAR_FUNC_ID=l.FUNC_ID,得到了两级菜单
接近 2 年之前 回复
Aasdfghjkl123_
Aasdfghjkl123_ ...
接近 2 年之前 回复
mysterychen
mysterychen 您好,请问一下表c,quota_category是怎么来的?
接近 2 年之前 回复

我觉得最好的办法是在业务里面组装成树形数据返回,
具体查看文章:
https://mp.csdn.net/postedit/80812336

数据库结构如下:图片说明
想要的结果:图片说明

select
q.func_id,q.func_name,q.par_func_id,
case
when
exists(select 1 from 表名 c where q.func_id=c.par_func_id)
then
1 else 0 end isParent
from 表名 q

尝试用select e.FUNC_ID,e.FUNC_NAME,l.FUNC_NAME from tc_func e LEFT JOIN tc_func l
ON e.PAR_FUNC_ID=l.FUNC_ID
得到两级菜单的结果:
图片说明

个人觉得,这种相对固定,修改率不大的数据,可以先分表查询后在业务层进行封装。

select * from (select col from table) t where t.col='1';

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐