sql - 从表示树结构的 Oracle 表中选择所有后代行

标签 sql oracle oracle10g hierarchical-data recursive-query

我在 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

将问号替换为您要查找分层数据所依据的父级。

引用:
  • ASK TOM: "connect by"
  • 关于sql - 从表示树结构的 Oracle 表中选择所有后代行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717435/

    相关文章:

    regex - 匹配除值列表之外的任何值 - oracle regex

    sql - Oracle:通过增加现有值来更新数据行

    sql - 从 PARTITION BY 子句中删除 ORDER BY 子句?

    oracle - 在 Microsoft Windows 2008 Server 64 位上安装 Oracle 10 ODP.NET

    sql - 如何在 SQL Server 中基于外键进行有效分区?

    mysql - 递归连接sql中的列

    sql - 使用分组依据时如何区分记录?

    java - Io异常: The Network Adapter could not establish the connection

    php - 检查在 mysql startdate enddate 列之间找到的日期 renge

    mysql - SQL查询: find lots that belong to current auction