oracle中的递归sql查询,connect by prior实现递归
可以使用start with...connect by子句递归查询一般用于一个表维护树形结构的应用
table的具体column
a b
1 0
2 1
3 1
4 2
5 3
如果想查找a=2及其下面的的所有数据,则:
select a,b from table start with a=2 connect by prior a=b
a b
2 1
4 2
其中也就是把a=2这条数据当做一个根目录开始递归查询。
其中的connect by prior a=b中靠近prior的a则表示a是父节点,在另一侧表示子节点。
接着找b能跟上一个父节点a相等的值也就是b=2的值,找到后再次记录当下的节点的a=4,并成为下一个查询的父节点的值,也就是下次查询要查找b=4的值,
继续循环下去直到下一个b的值无法满足上一节点a的值时结束了递归的查询。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1052895/ ,如需转载,请注明出处,否则将追究法律责任。