我在 Oracle 10g 中有一个代表树结构的表 MYTYPE,它是这样的:
ID | PARENTID | DETAIL
我想选择 MYTYPE 中作为特定 ID 后代的所有行,以便我可以在其他地方创建查询,例如:
SELECT *
FROM MYDETAIL
WHERE MYTYPEID IN [all MYTYPE which are descendants of some ID];
什么是构建后代集的经济高效的方法,最好不使用 PL/SQL?
最佳答案
Oracle 直到 11g R2 才支持使用递归子查询分解(SQL Server 语法中的 CTE)的 ANSI 分层语法,因此您必须使用 Oracle 的 native CONNECT BY 语法(自 v2 起支持):
SELECT t.*
FROM MYTABLE t
START WITH t.parentid = ?
CONNECT BY PRIOR t.id = t.parentid
将问号替换为您要查找分层数据所依据的父级。
引用:
关于sql - 从表示树结构的 Oracle 表中选择所有后代行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717435/