如何按值命名父元素的子元素? SQL 服务器

Posted

技术标签:

【中文标题】如何按值命名父元素的子元素? SQL 服务器【英文标题】:How to name child elements of a parent element by value? SQL server 【发布时间】:2017-12-14 08:07:45 【问题描述】:

请告诉我一个如何将所有子节点标记为父 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

【问题讨论】:

【参考方案1】:

我不知道它是否适用于 Sql server 2012,但我发现了这个 microsoft,我认为这是你想要的,为了使 parentSelector 有条件,我使用 CASE (Transact-SQL)。

这是另一个例子:*** question

【讨论】:

问题在于,在节点 9 上进行分层选择时,我们不知道节点 3,并且通过 CASE 我们无法跟踪... 如果我理解了这个问题,你需要循环加入,就像这样*** join。这可以允许你想要的,但是如果表比这大,这会使服务器变慢。 我不认为这是一个好的解决方案,因为结构(真正的树)比这个例子更大。不过谢谢大家的帮助,我会熟悉这个方法的

以上是关于如何按值命名父元素的子元素? SQL 服务器的主要内容,如果未能解决你的问题,请参考以下文章

jquery如何获取父元素的子元素

如何检查特定父元素的子元素的值?

如何使用 node.js 访问 json 对象的子元素

如何随时获取父组件中的子组件输入元素

javascript 怎么获取父元素的子元素个数呢

如何在 Next.js 中使用门户获取直接父容器之外的子元素?