当前位置: 首页 > 面试题库 >

SQL:递归路径

韩琛
2023-03-14
问题内容

是否可以在SQL中创建“树解析器”?

我有一张桌子:

ID Name Parent
1  a
2  b    1
3  c    1
4  d    3

现在,我想返回一个SQL查询:

ID   PATH
1    /a
2    /a/b
3    /a/c
4    /a/c/d

SQL可能吗?这对我来说会使很多事情变得容易。任何帮助将不胜感激!


问题答案:

根据所使用的数据库服务器的不同,可能已经为您提供了此功能。否则,您可以创建一个调用自身以返回此信息的函数,或者实现一个物化路径解决方案。

更新:

对于DB2,您可以使用递归公用表表达式。



 类似资料:
  • 问题内容: 我们如何在T-SQL中编写递归SQL查询?您能举一个这样的递归sql查询的简单例子吗? 问题答案:

  • 问题内容: 我有此功能返回: } 但是我想做的是搜索文件/文件夹并返回它的路径,我该怎么做?你有这样的功能,或者可以给我一些技巧吗? 问题答案: 尝试结合使用RecursiveIteratorIterator和RecursiveDirectoryIterator

  • 问题内容: 我正在尝试执行我认为使用CTE进行递归比较困难的事情是SQL Server 2008。 在下面的示例中,您可以假设固定深度为3 …没有任何比这更低的深度了。在现实生活中,深度是“更深的”,但仍然是固定的。在示例中,我尝试将其简化一些。 我的输入数据如下。 我的CTE的输出应为下表。 如果我可以在输出中获得ID列,则可以肯定地可以映射到查找表中的名称。 我也乐于接受其他方法来完成此任务,

  • 问题内容: 基于现有表,我使用了CTE递归查询来得出以下数据。但是无法进一步应用它。 数据如下 我想从上述数据递归形成完整路径。意味着递归将给出以下输出。 谢谢 问题答案: 以下是CTE的示例:

  • 问题内容: 我有一个问题,就是无法解决。我知道我想要的,只是无法在屏幕上显示出来。我有一张桌子,看起来像这样: ParentId具有FK到ID。 我要完成的工作是获取我传递的ID下方所有ID的完整列表。 例子: 这棵树看起来像这样: 如果我现在要求4,我将只得到4,但是如果我要求1,我将得到1、2、3和5。如果我要求2,我将得到2和3,依此类推。 有谁能指出我正确的方向。我的大脑炸了,所以我感谢我

  • 问题内容: 使用Oracle 11g第2版,以下查询给出ORA-01790:表达式必须具有与相应表达式相同的数据类型: 该错误表明UNION ALL的两个子查询的数据类型返回不同的数据类型。 即使我在每个子查询中都将其转换为TIMESTAMP,也将收到相同的错误。 我想念什么? 编辑: 我不是在寻找CONNECT BY替换。 问题答案: 我认为,对于带有日期或时间戳列的查询,“递归子查询分解”在1