是否有更简单/更有效的方法来执行此查询?

时间:2013-07-09 22:24:33

标签: sql sql-server hierarchical-data

我有一个表格,以某种“父母对孩子”的方式显示记录之间的关系。 [ID]字段标识记录,[PARENT]字段用[ID]标识该记录的父节点。这将为最顶层的父级创建树结构。请参阅下表作为示例:

[ID]     [PARENT]     [QUANTITY]
123      123          1
456      123          2
789      123          1
321      456          1
654      321          2
987      321          4

请注意,[ID] ='123'的记录是这个“树”中最顶层的记录。我需要查询此表以选择最顶层记录下的所有树节点(完整记录),例如树中[ID] ='123'下面的所有记录(上面示例表中的所有记录)。目前我正在使用存储过程来循环抓取记录的子节点[ID] ='123',然后记录子节点等。我知道必须有一个更容易的查询(不是存储过程)可以动态适应这种情况我不知道如果没有循环确保所有的孩子都被收到,这可能会如何工作。任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

使用“WITH”公用表表达式 - 强烈建议在分层查询中使用。

http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx