oracle 递归查询怎么用
时间: 2023-08-13 13:08:33 浏览: 79
深入sql oracle递归查询
5星 · 资源好评率100%
Oracle 中的递归查询可以使用 `WITH` 子句和递归公共表达式来实现。以下是一个示例递归查询:
假设有一个表 `EMPLOYEES`,其中包含员工的 ID 和经理的 ID,我们想要找到每个员工的上级经理,可以使用以下查询:
```
WITH RECURSIVE manager_tree AS (
SELECT ID, MANAGER_ID, NAME
FROM EMPLOYEES
WHERE ID = 1 -- 假设要查询的员工 ID 为 1
UNION ALL
SELECT e.ID, e.MANAGER_ID, e.NAME
FROM EMPLOYEES e
JOIN manager_tree mt ON e.ID = mt.MANAGER_ID
)
SELECT *
FROM manager_tree;
```
这个查询中,`WITH` 子句定义了递归公共表达式 `manager_tree`,它包含了初始查询结果和递归查询的部分。初始查询结果是找到员工 ID 为 1 的员工,递归查询的部分是通过在 `EMPLOYEES` 表和 `manager_tree` 表之间进行连接来查找每个员工的上级经理。最后,查询结果包括了所有员工及其对应的上级经理。
需要注意的是,递归查询可能会导致性能问题,因此需要谨慎使用。
阅读全文