给定层次结构中的任何 ID,获取自引用表中的整个 ID 链
我有一个包含以下数据的表:
+----+----------+
| ID | ParentID |
+----+----------+
| 27 | 0 |
| 38 | 27 |
| 45 | 38 |
| 86 | 0 |
| 92 | 45 |
| 48 | 86 |
| 62 | 92 |
| 50 | 62 |
-----------------
我希望能够将任何 ID 传递给存储过程并获取整个 该给定 ID 的 ID 链(父级和子级)。
IE。如果我通过 ID = 45,我应该得到:
27
38
45
92
62
50
同样,如果我通过 ID = 86,我应该得到:
86
48
任何帮助将不胜感激!
I have a table that contains the following data:
+----+----------+
| ID | ParentID |
+----+----------+
| 27 | 0 |
| 38 | 27 |
| 45 | 38 |
| 86 | 0 |
| 92 | 45 |
| 48 | 86 |
| 62 | 92 |
| 50 | 62 |
-----------------
I would like to be able to pass any ID to a stored procedure and get the entire chain of IDs (parents and children) of that given ID.
ie. if I pass ID = 45, I should get:
27
38
45
92
62
50
Similarly, if I pass ID = 86, I should get:
86
48
Any help would be greatly appreciated!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用两个递归 CTE。第一个找到根节点,第二个构建链。
版本 2
更短一些,查询计划建议更有效,但如果不测试真实数据,你永远不会知道。
You can use two recursive CTE's. The first finds the root node and the second builds the chain.
Version 2
A bit shorter and query plan suggests more effective but you never know without testing on real data.