oracle 中 sql查询树状关系数据
test_kcz表:
kczid(主键ID) —— mc(名称) —— sjkczid(上级Id)
t123 —— a组 —— null
t1231 —— a1组 —— t123
t1232 —— a2组 —— t123
示例sql :
select * from TEST_KCZ start with kczid=‘t123’ connect by AAA kczid = sjkczid
解释:
SQL 主体是:
select … from 表名 start with T1
connect by T2
where T3;
其中,
T1 是 根节点,【从某条数据开始】;
T2 是连接条件,其中用AAA表示上一条记录,
比如 connect by AAA 主键ID=父级ID 就是说上一条记录的ID是本条记录 的父级ID,即本记录的父级是上一条记录;
T3 是过滤条件,用于对返回的所有记录进行过滤【where T3 不是必要条件,没有就不需要】
查询顺序:
通过子节点向根节点追朔.
Sql代码
select * from 表名 start with kczid = ‘xx’ connect by AAA 父级ID=主键ID
通过根节点遍历子节点.
Sql代码
Select * from 表名 start with deptid=‘XX’ connect by AAA 主键ID=父级ID
若有错误,欢迎指正。