oracle+plsql

SELECT * FROM people start with id = 3 connect by id = prior parentid

  

一、递归查询之start with关键字

基本用法:SELECT * FROM tablename start with 条件1 connect by 条件2 and 条件3

   

测试用例数据及结构如上

既然是递归查找,那当然是树形结构了。

SELECT * FROM people start with id = 3 connect by prior id = parentid and  id<>6

下面对各个条件进行解释:

  条件一是进行开始查找的根节点,所以是跟在start with后。(可选)

  条件二是节点间进行关联的条件,所以是跟在connect by 关键字之后。本例子中是通过id和parentid进行关联的。

  条件三是普通的查询条件。(可选)

  当然prior 关键字是很重要的,条件二中修饰关联的条件,没有prior时则默认关联本条数据。

  prior的语法理解是,prior修饰的属性是前一条数据的,而等号另一侧的属性是所要查找的本条数据。

  直观的理解是,prior修饰的属性是父节点,则对树进行向上遍历。反之,修饰子节点属性,则向下遍历。

SELECT * FROM people start with id = 3 connect by prior id = parentid 

SELECT * FROM people start with id = 3 connect by id = prior parentid

 

猜你喜欢

转载自www.cnblogs.com/zth250/p/9468949.html