表结构如下:
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做到,请问该怎么写?谢谢!
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做到,请问该怎么写?谢谢!
解决方案 »
- mysql中的auto_increment怎么重新排序
- 求个SQL,如何在符合条件的记录中每个group只取前两条?
- 如何将MYSQL查询结果赋值给一个变量
- 去掉重复记录的问题
- MySQL语句中模糊匹配参数的问题
- #1146 - Table 'servicedesk.aaaaccadminprofile' doesn't exist 这是什么原因?
- 如何提高 这个语句的运算速度
- 怎样在mysql中使用innoDB表
- MYSQL库中有一日期型字段RQ,怎么取RQ中的年、月、日?
- MYSQL 咋么样获取分组后随机的2条数据 在线等大神!!!
- 在mysql中如果不指定numeric数据类型的大小和精度,默认是多少?
- 论坛升级前的MYD数据能恢复回来吗?
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
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx
太感谢ACMAIN_CHM了,在你的指导下,我终于写出来了,谢谢!
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