1
6
您将需要递归功能。使用递归查询,这将是:
其他选项包括在存储过程中执行递归、在应用程序中执行递归、限制递归量以及使用大量连接。(最后一个选项对于非平凡深度而言并不真正有效) |
2
1
如果深度是无限的,那么问题是递归的,没有一个简单有效的解决方案。(可能有简单的xor高效解决方案。)如果您可以控制模式,并且需要定期访问这类数据,那么您可以将表重构为一个嵌套集,每个元素都有左右包含边界。这将允许您使用基本条件计算单个查询中节点的深度,大约:
|
3
1
让我举个例子:
这主要用于变化不大的树,如部门层次结构或类似结构。 我知道这样的字符串并不完全遵循规范化理论,因为它似乎会使多个规则(多键、多值字段等)无效,但它在许多场景中都非常有用,包括您要求的场景。 在您的情况下,只需检索相关节点的树值,根据最简单的方法,计算分隔符的数量,或者使用替换函数删除它们,并计算长度差异。 下面是SQL以提供上述节点列表及其深度:
|
4
-1
这不是一个非常聪明的解决方案,但在没有任何附加列和递归功能的情况下可以工作。 可以按如下方式进行左连接:
这绝对不是一个优雅的解决方案,但应该适用于所有数据库。 |
Hatsune Miku · 比较或if语句是否更快[已关闭] 1 年前 |
Black Swan · 无法解压缩的值太多(应为2)错误 1 年前 |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
Balfar · 处理NumPy阵列上的循环最有效的方法是什么? 2 年前 |
Daniel · C#轻松存储快速访问的大型位矩阵 6 年前 |
halbe · 优化音频DSP程序的numpy计算 6 年前 |
Afsara · 是否有任何方法不能优化我们的应用程序? 6 年前 |