Oracle CONNECT BY 递归子到父查询,包括自引用的最终父级

2024-01-18

在下面的例子中

id parent_id
A  A
B  A
C  B

select id, parent_id
from table
start with id = 'A'
connect by nocycle parent_id = prior id

I get

A A
B A
C B

在我的数据库中,表中有数百万行以及深而宽的层次结构,我并不对所有孩子感兴趣。我可以派生出我感兴趣的子项。因此,我想彻底改变查询并提供 START WITH 子项 id。然后我想递归地输出父级,直到到达顶部。在我的例子中,顶部是 id 和parent_id 相等的地方。这就是我正在尝试的,但我无法让它显示顶级父级。

select id, parent_id
from table
START WITH id = 'C'
CONNECT BY nocycle id = PRIOR parent_id

这给了我

C B
B A

它没有输出 A A。可以这样做吗?我希望做的不是在输出中将parent_id 显示为单独的列,而只是显示与id 相关的名称。然后,顺序就隐含了层次结构。


我通过使用得到了这个结果WITH条款。

WITH REC_TABLE ( ID, PARENT_ID)
AS
(
    --Start WITH 
    SELECT ID, PARENT_ID
    FROM table
    WHERE ID='C'

    UNION ALL
    --Recursive Block
    SELECT T.ID, T.PARENT_ID
    FROM table T 
    JOIN REC_TABLE R
    ON R.PARENT_ID=T.ID
    AND R.PARENT_ID!=R.ID   --NoCycle rule
)
SELECT *
FROM REC_TABLE;

它似乎也是这样工作的。

select id, parent_id
from T
START WITH id = 'C'
CONNECT BY id = PRIOR parent_id and parent_id!= prior id;
--                                  ^^^^^^^^^^^^^^^^^^^^
--                                      break cycles

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle CONNECT BY 递归子到父查询,包括自引用的最终父级 的相关文章

  • 递归例程获取PropertyInfo

    我正在尝试创建一个递归例程 它将检索指定对象 在 NET 3 5 中 下的所有成员的 PropertyInfos 直接成员的一切都正常 但它还需要解析嵌套类 及其嵌套类等 我不明白如何处理解析嵌套类的部分 这部分代码你会怎么写呢 publi
  • SQL Server 连接其他表中不存在的位置

    Service Asset AssetService Id Name Id Name AssetId ServiceId
  • 提高第一个查询的性能

    如果执行以下数据库 postgres 查询 则第二次调用要快得多 我猜第一个查询很慢 因为操作系统 linux 需要从磁盘获取数据 第二个查询受益于文件系统级别和 postgres 中的缓存 有没有一种方法可以优化数据库以快速获得结果fir
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 如何使用 SQL Server 2008 将行复制到同一个表中

    A 到目前为止我的方式 sqlCommand CommandText INSERT Table1 column1 column2 column3 SELECT column1 column2 column3 FROM Table1 WHER
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • 通知设置的数据库设计

    用户可以打开或关闭 他的通知设置 帐户 用于通知 例如 更改帐户资料信息 收到新消息等 通知可以通过电子邮件或手机 推送或短信 发送 用户可以只有 1 封电子邮件和多个手机设备 有什么方法可以改进以下数据库设计或者您会采取不同的方式吗 让我
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么
  • SQL WHERE 取决于星期几

    我需要检查不同日期的记录 具体取决于当前是一周中的哪一天 在周五 我需要它查看整个下周 直到下周日 在其他任何一天 它都应该检查当前周 直到下周日 我目前有以下内容 但由于语法错误而无法工作 是否可以做一个CASE WHEN里面一个WHER
  • PL/SQL 中无法选择 count(*)

    DECLARE rec count integer default 0 str varchar 100 BEGIN str select count into rec count from emp table EXECUTE IMMEDIA
  • SQL 按 IN 子句中的元素排序

    我有一个ITEM表 我想返回按 IN 子句中通知的相同顺序排序的结果 这些 ID 由用户告知 今天我有这个 SELECT FROM ITEM WHERE ITEM ID IN 45 2 671 6 ORDER BY CASE ITEM ID
  • 如何通过代码确定Oracle数据类型的字符串值?

    I use DBMS SQL DESCRIBE COLUMNS过程来确定 SELECT 查询的结果集中的列使用什么数据类型 但不幸的是这样我只能得到Oracle数据类型的代码 record col type 1 8 12 等 所以我想知道
  • 如何获取日期时间字段的 UTC?

    我正在使用 MySQL 5 并且正在尝试将日期时间字段转换为 UTC TIMESTAMP 这是我所拥有的 但它不起作用 并且不确定我是否可以做到这一点 但有人可以告诉我我做错了什么吗 谢谢 我已经尝试过这个 SELECT UTC TIMES
  • 如何在 SQL 选择查询中将行转换为 JSON?

    以下查询将整个表返回为单个 JSON 字符串 JSON 对象列表 每行一个 SELECT FROM MyTable FOR JSON AUTO 我需要返回多行 其中每行都是表中单行的 JSON 字符串 例如 如果表字段为 A B C 输出应
  • PostgreSQL 位图堆扫描索引非常慢,但仅索引扫描很快

    我创建了一个包含 43kk 行的表 并用值 1 200 填充它们 因此 表中每个数字大约为 220k create table foo id integer primary key val bigint insert into foo se
  • 发布Oracle和SQL Server性能测试是否违反许可? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想对Oracle和SQL Server中的空间索引进行性能测试 我想将其纳入我的理学硕士工作中 发布此类结果是否违反 dbms 的许可 也许有人已经

随机推荐

  • Yii2:如何访问模板邮件中的参数?

    我有以下代码 Yii app gt mailer gt compose layouts html name gt this gt name email gt this gt email subject gt this gt subject
  • 防止调试 PhoneGap 应用程序

    我使用 PhoneGap 创建了一个 iOS 应用程序 我了解到将 iPhone 连接到 Mac 在 iPhone 上启用 Safari 调试 然后在 Mac 上使用 Safari 来查看属于该应用程序的所有 HTML 和 JavaScri
  • 如何在 iOS 中从图像处理中检测对象?

    我有一个图像 图像中有一个玻璃杯 两个勺子 此图像显示在 iPad 上 现在我希望当用户仅触摸勺子时 勺子颜色将变为绿色 图像的其余部分保持不变 我不知道该怎么做 从哪里开始呢 任何想法或建议都将受到高度欢迎 使用 CALayer 使用所需
  • 习惯从类型继承元类?

    我一直在尝试理解 python 元类 因此一直在浏览一些示例代码 据我了解 Python 元类可以是任何可调用的 所以 我可以让我的元类像 def metacls clsName bases atts return type clsName
  • 使用 PadRight 方法填充字符串

    我正在尝试在 C 中的字符串末尾添加空格 Trip Name1 PadRight 20 还尝试过 Trip Name1 PadRight 20 这些似乎都不起作用 不过我可以用任何其他字符填充字符串 为什么 我应该更具体 这是完整的代码 l
  • 在 Laravel 5 中动态编辑 .env 是个好主意吗?

    我正在构建一个管理面板 所以我需要做一些核心设置我的 Laravel 5 应用程序 如 smtp 设置等 可通过前端界面配置给最终用户 我最初的想法是使用数据库作为设置存储和缓存 以避免每次访问配置值时发出数据库调用 然而 看来 外观在配置
  • 在摘要报告侦听器文件名中使用时间函数

    在 JMeter 5 1 1 中 我有一个摘要报告 我试图将其保存为带时间戳的文件 文件名值如下所示 D Load Tests example com Results time yyyy MM dd HH mm ss summary csv
  • 在类 Unix 系统上获得以秒或毫秒为单位的正常运行时间

    我需要一种方法 可以给出自系统启动以来经过的毫秒数或秒数 我可以解析 proc uptime 但我不能因为这个 I 0 和解析而损失性能 我正在使用 Linux 和 C C 也许我可以添加一些 Qt Boost 但最好是原生的 为什么你读不
  • Entity Framework 4 与 LINQ to SQL,适用于中小型应用程序,与 SQL Server 配合使用

    早在 4 月份 VS2010 发布时 我就在 Stack Overflow 上看到过一些关于 L2S 与 EF4 的讨论 即 既然 Entity Framework 4 0 已经发布 就转储 Linq To Sql 吗 https stac
  • 尝试在 Flutter 上运行此处示例时出错

    所以我正在尝试将 Here 集成到我的 flutter 应用程序中 所以我正在关注这个页面flutter sdk 导航 https developer here com documentation flutter sdk navigate
  • 更新到 Mac OSX 10.9.4 后找不到 npm 命令

    将操作系统更新到 Mavericks 后 我无法在终端上执行 npm 命令 当我尝试这个时 node usr local lib node modules npm bin npm cli js v它正在工作并显示版本 1 4 3 我不知道这
  • Flash 功能中的冲突检测? (命中测试对象)

    你好 所以我最近一直在使用hitTestObject检测我正在制作的 Android 应用程序中的碰撞 经过一番测试后 我意识到游戏正在检测 假 碰撞 我的意思是它正在检测碰撞not当物体的像素接触时 但是 经过一些研究后 我发现boxes
  • 如何让每个
  • 标签一个接一个地慢慢出现
  • 我希望当页面加载时列表项慢慢地一个接一个地出现在屏幕上 这是jquery中的代码 我使用过show 但它不起作用 我确实在这里查找问题 其中一些正在使用附加方法 但这不是我要寻找的 html ul li A li li B li li C
  • Angular 4自带的form element组件

    我是角度初学者 我可能需要一些帮助 首先 我将展示它如何工作 然后我将写下我希望它如何工作 这是使用 ngModel 时的常规方式
  • 如何在具有可变宽度 Unicode 字符的 Swift 字符串上使用 NSRegularExpression?

    我无法获取NSRegularExpression匹配字符串中含有较宽 Unicode 字符的模式 看起来问题出在范围参数上 Swift 计算单个 Unicode 字符 而 Objective C 将字符串视为由 UTF 16 代码单元组成
  • 如何使用CPU在深度睡眠模式下执行任何操作

    我是新来的android 我花了大约三个星期的时间来处理我的申请 我需要在正常模式下发送和接收数据包sleep mode My app必须交换数据 5 秒 我尝试使用alarmmanager但在 android 5 上它不起作用 在andr
  • MongoDB InvalidDocument:无法对对象进行编码

    我正在使用 scrapy 来抓取博客 然后将数据存储在 mongodb 中 起初我得到了 InvalidDocument 异常 对我来说很明显的是数据的编码不正确 因此 在持久化对象之前 在我的 MongoPipeline 中 我检查文档是
  • 如何合并数组并保留键?

    我有两个数组 array1 array a gt 1 b gt 2 c gt 3 array2 array d gt 4 e gt 5 f gt 6 a gt new value 123 gt 456 我想合并它们并保留键和顺序而不是重新索
  • Xcode 在打字时滚动文本

    Xcode 今天似乎做了一些烦人的事情 我喜欢编辑源代码 这样我就可以在 Xcode 窗口的垂直中心大致输入内容 我不喜欢在窗口底部或顶部附近键入 因为它隐藏了我正在忙于编辑的代码之前或之后的代码 最近 在编辑实现文件时 Xcode 习惯于
  • Oracle CONNECT BY 递归子到父查询,包括自引用的最终父级

    在下面的例子中 id parent id A A B A C B select id parent id from table start with id A connect by nocycle parent id prior id I