ckp*_*ong 3 sql oracle recursive-query oracle10g hierarchical-data
我在Oracle 10g中有一个表MYTYPE表示树结构,如下所示:
ID | PARENTID | DETAIL
Run Code Online (Sandbox Code Playgroud)
我想选择MYTYPE中作为特定ID的后代的所有行,以便我可以在其他地方创建查询,例如:
SELECT *
FROM MYDETAIL
WHERE MYTYPEID IN [all MYTYPE which are descendants of some ID];
Run Code Online (Sandbox Code Playgroud)
构建后代集的成本效率最高的方法是什么,最好不使用PL/SQL?
Oracle不支持在11g R2之前使用递归子查询因子(SQL Server语法中的CTE)的ANSI分层语法,因此您必须使用Oracle的本机CONNECT BY语法(从v2开始支持):
SELECT t.*
FROM MYTABLE t
START WITH t.parentid = ?
CONNECT BY PRIOR t.id = t.parentid
Run Code Online (Sandbox Code Playgroud)
将问号替换为您要查找基于的分层数据的父级.
参考: