如何按值命名父元素的子元素? 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 服务器的主要内容,如果未能解决你的问题,请参考以下文章