with recursive oracle
时间: 2024-06-08 13:10:23 浏览: 188
Oracle 11GR2的递归WITH子查询方法
WITH RECURSIVE是Oracle中用于递归查询的语法。它允许我们在查询中使用递归结构,以便在结果集中返回与查询条件匹配的所有层级的数据。
具体来说,使用WITH RECURSIVE语句可以定义一个临时表,然后使用这个临时表进行递归查询。在递归查询中,我们可以使用UNION ALL将临时表和原始表连接起来,并在连接条件中使用先前迭代的结果。这样,每次迭代都会将符合条件的数据添加到临时表中,直到达到递归终止条件。
在你提供的例子中,使用了WITH RECURSIVE语句查询了sys_info表中id为'00031'的记录及其子节点的信息。临时表temp的结构包括id、name和pid三个字段。首先,查询将id为'00031'的记录添加到temp表中。然后,在每一次迭代中,通过连接条件temp.id = o.pid,在sys_info表中将符合条件的子节点添加到temp表中。这个过程会一直进行,直到没有符合条件的子节点为止。
最终,通过SELECT * FROM temp语句可以获取到递归查询结果的所有记录。在这个例子中,查询的结果是符合条件的id字段。
总结起来,通过使用WITH RECURSIVE语句,我们可以在Oracle中进行递归查询,获取符合条件的所有层级的数据。这在处理具有层次结构关系的数据时非常有用。
阅读全文