SQL SELECT 在父亲 ID 组织树中查找循环引用?

2024-04-30

带有循环引用的“乐趣”:

假设我有一个表 ELEMENTS,其中包含元素的层次结构,由父 ID 建模。

对于根来说,父亲 ID 字段为空。

所有其他记录都有一个非空父 id 和(自动排序的)主键(ID) 的父元素。

例如,使用

SELECT *
FROM Elements
WHERE FATHER_ID not in (SELECT ID FROM Elements)

我可以找到所有具有无效父引用的元素(FATHER_ID不是外键,我们假设在本例中)。

但是,如何找到确实具有有效父引用但其父引用链不以根结尾的元素呢?我认为这只会发生在循环引用中,例如 A 是 B 的父亲,但 B 也是 A 的父亲。这样的“子树”不链接到根,因此不是主树的一部分。我想找到这样的子树。

当然,我正在寻找一个查询,它可以传递那些导致循环引用的元素,无论引用链有多长。

这在 SQL 中可能吗?还是我需要迭代解决方案?


SELECT  n.*, CONNECT_BY_ROOT(id), level
FROM    elements n
START WITH
        id IN
        (
        SELECT  MIN(id)
        FROM    (
                SELECT  id, CONNECT_BY_ROOT(id) AS root
                FROM    elements
                START WITH
                        id IN
                        (
                        SELECT  id
                        FROM    elements n
                        WHERE   CONNECT_BY_ISCYCLE = 1
                        CONNECT BY NOCYCLE
                                father_id = PRIOR id
                        )
                CONNECT BY NOCYCLE
                        id = PRIOR father_id
                )
        GROUP BY
                root
        )
CONNECT BY NOCYCLE
        id = PRIOR father_id

您可能想阅读这篇文章:

  • 寻找树中的循环 http://explainextended.com/2009/05/18/finding-loops-in-a-tree/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL SELECT 在父亲 ID 组织树中查找循环引用? 的相关文章

  • SQL Server中的列级与表级约束?

    A 列级 GO CREATE TABLE Products ProductID INT CONSTRAINT pk products pid PRIMARY KEY ProductName VARCHAR 25 GO b 表层 CREATE
  • Postgresql 串行错误自动增量

    我在 postgresql 上遇到问题 我认为 postgresql 中有一个错误 我错误地实现了一些东西 有一个表包括colmn1 primary key colmn2 unique colmn3 插入一行后 如果我尝试使用现有的另一次插
  • sql join 告诉我 ID 是否存在于其他表中

    我有 2 张桌子 A B ID FKID 1 3 2 3 3 4 4 4 我需要一个 select 语句 它显示 A 的所有内容 其中一个字段告诉我表 B 是否有任何与该 ID 匹配的 id Desired Result ID hasB 1
  • Sql Server 的夏令时

    我们正在使用一个以 C Unix 格式存储日期的旧应用程序 C 时间基本上是自 1970 年 1 月 1 日以来的秒数 日期以整数形式存储在 SQL Server 数据库中 我正在为使用这些日期的报告编写视图 到目前为止 我正在使用以下命令
  • Oracle 删除约束级联等效于 Sql Server

    在Oracle中 删除约束PK SAI我使用语法 ALTER TABLE SAISIE DROP CONSTRAINT PK SAI CASCADE SQL Server 中与此等效的是什么 您正在考虑与实际 DELETE 语句相关的 FO
  • 与 SQL 中的 IN 运算符相反

    我怎么能做相反的事情 换句话说 选择所有姓氏不是 Hansen 或 Pettersen 的人 WHERE lastname NOT IN Hansen Pettersen 请参阅 IN 和 NOT IN 运算符 部分SQLite 所理解的
  • 如何检查oracle数据库中分配给模式、角色的对象的权限(DDL、DML、DCL)?

    大多数时候 我们都在与愚蠢的事情作斗争 以获取架构 角色及其对象的权限详细信息 并尝试找到一些简单的方法来获取有关它的所有详细信息以及伪查询代码 以批量生成授予语句以供进一步使用执行 所以我们在这里得到它 关于数据字典视图前缀的一些简单介绍
  • SQL Server Like 查询不区分大小写

    Query SELECT from Table 2 WHERE name like Joe Output 1 100 Joe 2 200 JOE 3 300 jOE 4 400 joe 为什么不区分大小写 Problem 查询不区分大小写
  • Oracle 按月滚动或运行总计

    目标 每个月末所有报表的滚动 运行总计 Code select TRUNC ACTHX STMT HX STMT DATE MM AS MNTH COUNT ACTHX INVOICE as STMTS from ACTHX group b
  • 如何在 PostgreSQL 中使用条件和子查询创建唯一索引?

    我使用 PGSQL 并尝试添加下面的索引 CREATE UNIQUE INDEX fk client ON user client fk client WHERE fk client NOT IN SELECT fk client FROM
  • SQL 约束最小值/最大值?

    有没有办法为数字字段设置 SQL 约束 最小值应为 1234 最大值应为 4523 SQL Server 语法为the check约束 http technet microsoft com en us library ms179491 as
  • ORA-00933 与内部联接和“as”混淆

    我有一个使用以下命令从两个表中获取数据的查询inner join 但我收到错误SQL command not properly ended as 下面有一个星号 select P carrier id O order id O aircra
  • 使用 Hibernate 将 Oracle 日期映射到 Java 对象

    我收到消息 文字与格式字符串不匹配 例如 以下是 Java 类中的一些方法 public String getDateTime public void setDateTime String date time 以下是该类的 Hibernat
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • 我应该使用平面表还是标准化数据库?

    我目前正在开发一个使用 MySQL 数据库作为后端的 Web 应用程序 在继续下一步之前 我需要知道什么更适合我的情况 简而言之 在这个应用程序中 用户将能够使用任何数字字段 他们决定 构建自己的表单 现在我将其全部存储在通过外键链接的几个
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • MySQL:如何获取每个分组的x个结果数[重复]

    这个问题在这里已经有答案了 可能的重复 mysql 在 GROUP BY 中使用 LIMIT 来获取每组 N 个结果 https stackoverflow com questions 2129693 mysql using limit w
  • 在 MS Access SQL 查询中从正常日期转换为 unix 纪元日期

    我正在尝试编写一个通过 ODBC 连接到 MySQL 数据库的 MS Access 2007 连接的查询 一切工作正常 查询执行我想要的操作 我挂断的部分是我一直在询问用户 unix 纪元时间 而不是常规日期 我查找了 MS Access
  • 如何更新 pl/sql 中嵌套表的列? [复制]

    这个问题在这里已经有答案了 我正在尝试在表中创建一个可以存储多个值的列 如下所示 我有一个学生id std和一个名为marks可以采用几个值 例如2 3 4 我想更新此列表以添加另一个标记2 3 4 5但我不知道怎么做 我如何更新专栏mar
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P

随机推荐

  • 您使用什么 cscope 参考卡? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 带圆角的 NSVisualEffectView

    如何在 OS X 中显示带圆角的 NSVisualEffectView 我添加 NSVisualEffectView 的代码 let visualEffectView NSVisualEffectView frame NSMakeRect
  • Pandas 从重采样中检索添加行的索引

    我有一个缺少行的数据框 我对其进行插值和重新采样 我想知道是否有办法在重新采样时获取添加到数据帧的行的索引 这就是我创建 重新采样 插入数据帧的方式 import numpy as np import pandas as pd from d
  • 使用 write.table 时避免在列名和行名中使用引号 [重复]

    这个问题在这里已经有答案了 我在名为 data txt 的文件中有以下数据 pid 1 2 4 15 18 20 1 at 100 200 89 189 299 788 2 at 8 78 33 89 90 99 3 xt 300 45 5
  • 嵌套 ListView、StreamBuilder 和子集合

    我正在尝试创建一个嵌套的 ListView 但不知道是否可以在嵌套视图中组合 2 个流构建器 因为它不起作用 在带有子集合查询的第二个 StreamBuilder 中 似乎没有返回数据 我不明白为什么 当我对文档 ID 进行硬编码时 我没有
  • 通过组合字符串将不同的行归为一行

    我有一个这样的数据集 Column1 Column2 1 A 1 B 1 C 2 D 2 E 2 F 2 G 3 H 3 I 我想将它合并成这样的东西 Column1 Column2 1 A B C 2 D E F G 3 H I 是否可以
  • 如何在 Matplotlib 中指定类似箭头的线条样式?

    我想在 Matplotlib 中显示一组 xy 数据 以指示特定路径 理想情况下 将修改线条样式以使用类似箭头的补丁 我创建了一个模型 如下所示 使用 Omnigraphsketcher 看来我应该能够覆盖常见的之一linestyle声明
  • Azure DevOps Rest Api 是否返回正确数量的拉取请求?

    我们正在尝试收集有关拉取请求的信息 以便为我们的部门建立某些指标 完成拉取请求需要多长时间 Azure DevOps 提供了一个 API 来查询很多东西 包括拉取请求 我在这里查了一下用法 https learn microsoft com
  • 页面加载后自动执行.on()函数

    I use container on click contentEffects 使一些 jquery 代码在 ajax 调用后再次工作 不过 我希望 on 函数可以在页面加载后立即自动执行 并且无需click事件 那可能吗 请看一下我的网站
  • 如何使用 PHP 在文本区域中显示 Word 文档?

    我试图使用 com 类测试代码来显示 Word 文件 但我似乎无法得到答案并且仍在搜索 我遇到错误 有时程序根本不显示任何内容 请给我一些想法 我正在使用 PHP 4 如果站点托管在装有 Word 的 Windows 计算机上 您可以使用
  • 使用Core Data中的Cascade删除关系对象

    我希望使用核心数据执行一些简单的删除 但仅需要对此的一些建议 我有一个包含交易 名称 事件和日期实体的模型 该交易与其他每个实体都有链接 在应用程序中 当用户将信息添加到文本字段时 该信息会保存到 4 个选项卡的表格视图控制器中 第一个选项
  • 伽玛分布拟合误差

    对于分类任务 我想将伽玛分布拟合到两对数据 类内和类之间的距离人口 这是为了确定理论错误接受率和错误拒绝率 The fit Scipy returns puzzles me tough A plot of the data is below
  • 实现批量记录获取

    在程序开始时 我需要将数据从 MS Access 数据库 mdb 读取到下拉控件中 这样做是为了每当用户在该控件中键入内容时 应用程序都可以自动完成 不管怎样 从数据库中读取数据花了很长时间 所以我想我应该实现批量行获取 这是我的代码 CS
  • 有没有办法从 Symfony 应用程序中的 url 中删除 '/web' 而不将 'web' 目录的内容移动到根目录?

    我在使用 Symfony 创建应用程序时遇到一个问题 即 url 中出现 web 我找到了一种方法来摆脱这个问题 将 web 目录的内容移动到根目录 但我认为这不是一个好的开发实践 必须有其他方法 谁能告诉我是否还有其他方法可以做到这一点
  • C++ 类名注入

    根据标准 class 2 类名也被插入到类本身的范围中 这被称为注入类名 此外 basic scope pdecl 9 声明要点注入类名 第 9 条 紧跟在类定义的左大括号之后 最后 basic lookup classref 3 及其示例
  • 选择项目后如何完全折叠 SearchView?

    我已经为此苦苦挣扎了好几个星期 我有一个全局搜索 它提供了一个自定义列表视图 并在用户输入时提供建议 当用户选择一个选项时 我希望搜索视图返回到完全折叠的状态 相反 它会缩小 但仍保持稍微扩大的视图 我已经把我能找到的所有东西都扔到了这件事
  • 使用自动布局,如何使同一“行”上的两个标签的宽度是动态的(根据每个标签需要的宽度进行调整)?

    假设我有两个 UILabel 一个是 URL 一个是计时器 http website com link to specific story 9m 42s 但是 计时器 UILabel 的宽度变化很大 有时只是12s例如 其他时候是125h
  • 如何更新 StatusBar 样式作为自定义转换的一部分

    我使用的是 iOS 7UIviewControllerAnimatedTransitioning呈现模式的协议ViewController带有自定义动画 动画工作正常 但是我想要新呈现的ViewController具有与当前 VC 不同的状
  • 是否可以通过 DynamicProxy 将属性添加到类型?

    我使用 Castle DynamicProxy 在运行时创建给定类型的代理 包括几个 mixin 我试图弄清楚是否也可以向代理添加任意属性 例如 class BaseType string Foo get set 在运行时 我创建一个新类型
  • SQL SELECT 在父亲 ID 组织树中查找循环引用?

    带有循环引用的 乐趣 假设我有一个表 ELEMENTS 其中包含元素的层次结构 由父 ID 建模 对于根来说 父亲 ID 字段为空 所有其他记录都有一个非空父 id 和 自动排序的 主键 ID 的父元素 例如 使用 SELECT FROM