【发布时间】:2013-10-04 10:31:13
【问题描述】:
我有一个用于构建菜单项树结构的表。该表的示例内容如下:
Parent Child
------ ------
190 192
192 180
180 185
185 184
190 191
191 197
197 200
我需要一个查询,它会给我一个以逗号分隔的父记录列表,按照它们在层次结构中出现的顺序,包括子 ID,例如:
- 给定子 ID 184,它应该返回 190、192、180、185、184
- 给定子 ID 200,它应该返回 190、191、197、200
【问题讨论】:
-
我认为这不能在单个查询中完成,因为您正在有效地扩展递归关系。我认为可以使用存储函数来完成(我不确定 SQL Server 是否支持存储函数中的递归)。假设它受支持,那么您可以轻松编写一个调用存储函数的简单查询。
-
绝对可以在一个(或两个)查询中完成。如果这个问题在几个小时后仍然悬而未决,我会提供答案。
-
假设困难在于用逗号分隔结果,是否有可能以通常的格式获得结果(不需要逗号分隔)?我更喜欢半面包而不是没有:-)
标签: sql-server parent-child hierarchy recursive-query