怎么用oracle递归查询所有子节点

avatar
作者
筋斗云
阅读量:2

在Oracle中,可以使用连接查询和递归子查询等方式来实现递归查询所有子节点。下面是使用递归子查询实现的示例:

  1. 创建一个表,例如employee表,其中包含员工的id和上级id字段。
CREATE TABLE employee (     id NUMBER,     parent_id NUMBER ); 
  1. 插入一些示例数据。
INSERT INTO employee (id, parent_id) VALUES (1, NULL);  INSERT INTO employee (id, parent_id) VALUES (2, 1);  INSERT INTO employee (id, parent_id) VALUES (3, 1);  INSERT INTO employee (id, parent_id) VALUES (4, 2); 
  1. 使用递归子查询查询所有子节点。
WITH recursive_query (id, parent_id) AS (     SELECT id, parent_id FROM employee WHERE id = 1 -- 指定根节点的id     UNION ALL     SELECT e.id, e.parent_id FROM employee e     JOIN recursive_query r ON e.parent_id = r.id ) SELECT * FROM recursive_query; 

在上述示例中,使用递归子查询来查询employee表中id为1的节点的所有子节点。递归子查询部分使用UNION ALL连接了两个SELECT语句,第一个SELECT语句返回了指定id的节点,第二个SELECT语句通过JOIN连接递归查询结果集和原始表,实现了递归查询。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!