oracle 递归查询 已知节点的兄弟节点
时间: 2023-09-16 10:12:00 浏览: 72
Oracle通过递归查询父子兄弟节点方法示例
如果已知某个节点的 ID,可以使用 Oracle 的 CONNECT BY 语句查询该节点的兄弟节点。假设我们有一个表格叫做 nodes,其中包含节点的 ID、父节点的 ID 和节点的名称,我们可以使用以下语句查询已知节点的兄弟节点:
```
SELECT n.id, n.name
FROM nodes n
WHERE n.parent_id = (
SELECT parent_id
FROM nodes
WHERE id = :node_id
)
AND n.id != :node_id
CONNECT BY PRIOR n.parent_id = n.parent_id
AND PRIOR n.id != n.id
```
其中,:node_id 是已知节点的 ID。首先在 WHERE 子句中查询已知节点的父节点的 ID,然后在 CONNECT BY 子句中指定节点的父子关系,PRIOR n.parent_id = n.parent_id 表示当前节点的父节点是前一个节点的父节点,PRIOR n.id != n.id 表示当前节点的 ID 不等于前一个节点的 ID,这样就可以查询到除了已知节点以外的兄弟节点了。
阅读全文