递归查询

oracle 中 Start with...connect by 的用法(递归查询)

半城伤御伤魂 提交于 2019-11-26 15:40:39
这几个关键字是查询递归数据的,形成一个树状结构。目前只有oracle支持,其他数据都要结合存储过程实现 语法:   select * from some_table [where 条件1] connect by [条件2] start with [条件3]; 其中 connect by 与 start with 语句摆放的先后顺序不影响查询的结果,[where 条件1]可以不需要。 [where 条件1]、[条件2]、[条件3]各自作用的范围都不相同: [where 条件1]是在根据“connect by [条件2] start with [条件3]”选择出来的记录中进行过滤,是针对单条记录的过滤, 不会考虑树的结构; [条件2]指定构造树的条件,以及对树分支的过滤条件,在这里执行的过滤会把符合条件的记录及其下的所有子节点都过滤掉; [条件3]限定作为搜索起始点的条件,如果是自上而下的搜索则是限定作为根节点的条件,如果是自下而上的搜索则是限定作为叶子节点的条件; 看下面的例子 TEST 表 EMPNO ENAME DPT MAR SAL 0075 XU D1 0082 3000 0082 BAO D1 0096 4000 0096 ZHAO D2 NULL 5000 0111 MU D2 0082 4000 0056 ZHANG D3 0111 3000 0923 WANG D3