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