oracle - 按子句连接以获得层次结构的顶部

标签 oracle connect-by

我在 Oracle 中使用 CONNECT BY 子句查找分层数据时遇到问题。让我举个例子:A 是我的父部分,它有子部分 B,B 也有一个子部分 C。当我使用 CONNECT BY 子句时,我能够获得所有三个级别但是我只想要最高级别,即 A。

最佳答案

Oracle 有一个 LEVEL pseudocolumn你可以使用:

SELECT
  myTable.ID,
  myTable.ParentID
FROM myTable
WHERE LEVEL = 1
CONNECT BY PRIOR myTable.ID = myTable.ParentID

要从任何级别查找顶级(根)值,请在列名前加上 CONNECT_BY_ROOT 运算符:

SELECT
  myTable.ID,
  myTable.ParentID,
  CONNECT_BY_ROOT myTable.ID AS "Top Level ID"
FROM myTable
CONNECT BY PRIOR myTable.ID = myTable.ParentID

关于oracle - 按子句连接以获得层次结构的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18110471/

相关文章:

sql - Oracle分层查询仅选择根父级

sql-server - 有没有办法在 SQL Server 的分层查询中检测循环?

oracle - 如何确定 Oracle Data Pump 导出文件中的模式

oracle SQL 中的 ( ) 括号

sql - 与 Oracle 的 CONNECT BY ... START WITH 等效的 PostgreSQL 语法是什么?

mysql - MYSQL 中的连接方式

sql - 甲骨文 : Hierarchical Query Connect By

使用 ORACLE 关键字作为列的 XML 模型在逆向工程时未翻译

java - 从 Oracle 表加载和更新 Gemfire 缓存

mysql - 将 MySQL 查询转换为 HSQLDB 和 Oracle 查询