如何按值命名父元素的子元素?SQL server

如何按值命名父元素的子元素?SQL server,sql,binary-tree,hierarchy,Sql,Binary Tree,Hierarchy,请告诉我一个如何将所有子节点标记为父id的示例。只需标记其父节点具有值“need”(请参见示例图像)的分支。使用递归查询,无法重命名特定父级的所有子级 初始数据: +-----+----------+----------+ | id | parentid | selector | +-----+----------+----------+ | 1 | | | | 2 | 1 | | | 3 | 1 |

请告诉我一个如何将所有子节点标记为父id的示例。只需标记其父节点具有值
“need”
(请参见示例图像)的分支。使用递归查询,无法重命名特定父级的所有子级

初始数据:

+-----+----------+----------+
| id  | parentid | selector |
+-----+----------+----------+
|  1  |          |          |
|  2  | 1        |          |
|  3  | 1        | need     |
|  4  | 2        |          |
|  5  | 2        | need     |
|  6  | 3        |          |
|  7  | 5        |          |
|  8  | 5        |          |
|  9  | 6        |          |
+-----+----------+----------+
需要数据:

+-----+----------+----------+----------------+
| id  | parentid | selector | parentSelector |
+-----+----------+----------+----------------+
|  1  | null     |          | null           |
|  2  | 1        |          | null           |
|  3  | 1        | need     | 3              |
|  4  | 2        |          | null           |
|  5  | 2        | need     | 5              |
|  6  | 3        |          | 3              |
|  7  | 5        |          | 5              |
|  8  | 5        |          | 5              |
|  9  | 6        |          | 3              |
+-----+----------+----------+----------------+
任务是通过其父元素具有值
“need”
的元素进行分组。我想,我应该创建一个带有标记的列,如上表中的示例所示,或者还有其他选项吗

我使用的是SQL Server 2012


我不知道它是否在Sql server 2012上工作,但我发现,我认为这正是您想要的,使parentSelector具有条件I用例(Transact-Sql)


这是另一个例子:

问题是,在节点9上的分层选择中,我们不知道节点3,并且通过案例我们无法跟踪这一点……如果我理解问题,您需要循环连接,如下所示。这可以满足您的需要,但如果表大于此值,这会降低服务器的速度。我不认为这是一个好的解决方案,因为结构(实树)比这个示例更大。但是谢谢你的帮助,我会熟悉这个方法的