1.school表结构如下
id | name | p_id |
---|---|---|
1 | 一年级 | 0 |
2 | 二年级 | 0 |
3 | 三年级 | 0 |
4 | 一班 | 1 |
5 | 二班 | 1 |
6 | 李四 | 4 |
7 | 张三 | 5 |
p_id指定父级id,所以对应的树型结果如下所示:
我们的目的是找出某一层级下的所有节点,那么可以使用如下sql
select * from school s start with s.id = ‘1’ connect by s.p_id = prior s.id
执行结果就是一年级及以下的所有记录都被查询出来。
id | name | p_id |
---|---|---|
1 | 一年级 | 0 |
4 | 一班 | 1 |
5 | 二班 | 1 |
6 | 李四 | 4 |
7 | 张三 | 5 |
如果想由下向上查询祖辈节点,可将sql最后的p_id与id更换位置。
如下
select * from school s start with s.id = ‘6’ connect by s.id = prior s.p_id
结果:
id | name | p_id |
---|---|---|
1 | 一年级 | 0 |
4 | 一班 | 1 |
6 | 李四 | 4 |