mysql中如何用一条sql语句找出4层树状父子节点

shetianlang 2011-05-09 06:07:42
表结构如下:
id, name, pid(父id)
1, a, 0
2, b, 0
3, a2_0, 1
4, a2_1, 1
5, a2_0_0, 3
.
.
.

如此树状超过两层.最多4层.

请问如何用一条sql语句,找出id=1本身及其所有子节点.sql语句必须能在mysql是用.
网上有很多oracle和sqlserver中的做法,但mysql中不行,我的mysql版本不支持存储过程,如果升级很多数据又不兼容.
看到很多大侠说不超过4层的可以用left join做到,请问该怎么写?

谢谢!
...全文
771 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shetianlang 2011-05-10
  • 打赏
  • 举报
回复
贴出我最终的代码以作纪念,顺便结贴给分!

select distinct e.id,e.name,e.level,e.up_level
from crm_district a
inner join crm_district b on a.id=b.up_level or a.id=b.id
inner join crm_district c on b.id=c.up_level or b.id=c.id
inner join crm_district d on c.id=d.up_level or c.id=d.id
inner join crm_district e on d.id=e.up_level or d.id=e.id
where a.id=1
shetianlang 2011-05-10
  • 打赏
  • 举报
回复

太感谢ACMAIN_CHM了,在你的指导下,我终于写出来了,谢谢!
ACMAIN_CHM 2011-05-09
  • 打赏
  • 举报
回复
另外也可以使用如下方法。

MySQL中进行树状所有子节点的查询
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx
ACMAIN_CHM 2011-05-09
  • 打赏
  • 举报
回复
select distinct d.id
from 表结构如下 a inner join 表结构如下 b on a.id=b.pid or a.id=b.id
inner join 表结构如下 c on b.id=c.pid or b.id=c.id
inner join 表结构如下 c on b.id=d.pid or c.id=d.id
where a.id=1
shetianlang 2011-05-09
  • 打赏
  • 举报
回复
期待各位高手不吝赐教!

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧