![]() |
1
2
CTE允许解决这种递归查询。如果事先知道深度级别,可以“展开”递归部分:
|
![]() |
2
0
很好的一天, 在我开始之前!如果这是您的要求,强烈建议重新考虑您的数据库结构。使用递归cte(或者可能是大多数其他递归解决方案)意味着您使用的是rdbms中不推荐使用的类循环解决方案(这些解决方案对于处理数据集最为优化)。如果您需要使用递归数据,那么您应该考虑例如使用hierarchyid数据类型(或者实现类似或更好的东西-是的,例如有更好的基于范围的层次结构算法,但这些算法在论坛的短消息中更复杂)。此外,您应该有一个很好的理由在不使用递归cte的情况下这样做,因为对于当前的结构,递归cte应该在大多数情况下提供最佳性能。 话虽如此,既然你要求这个解决方案,那么请检查这个查询是否能解决你的需求
注意:比较我的解决方案( 假设它符合你的需要 )对于Lukasz szozda,根据执行计划(我没有检查IO或时间),我的解决方案将仅使用22%,而Lukasz解决方案使用78%(在SQL Server 2017上测试) |
![]() |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 2 年前 |
![]() |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
![]() |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
![]() |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |