Sql server 2008 查询线程化讨论

Sql server 2008 查询线程化讨论,sql-server-2008,Sql Server 2008,我有一个单独的表,其中包含REPLYTO中的自参考InReplyTo,其中包含以下数据: PostID InReplyTo Depth ------ --------- ----- 1 null 0 2 1 1 3 1 1 4 2 2 5 3 2 6 4 3 7 1 1 8 5 3 9

我有一个单独的表,其中包含REPLYTO中的自参考
InReplyTo
,其中包含以下数据:

PostID InReplyTo Depth
------ --------- -----
1      null      0
2      1         1
3      1         1
4      2         2
5      3         2
6      4         3
7      1         1
8      5         3
9      2         2
我想写一个查询,它将以线程形式返回这些数据,这样ID=2的帖子及其所有子体将在PostID=3之前输出,以此类推,深度无限

PostID InReplyTo Depth
------ --------- -----
1      null      0
2      1         1
4      2         2
6      4         3
9      2         2
3      1         1
5      3         2
8      5         3
7      1         1

有没有一个简单的方法来实现这一点?我可以在这个阶段修改DB结构,这样新的
层次结构
数据类型会是最简单的方法吗?或者可能是一个递归的CTE?

您正在寻找的确实是一个


可以找到与您的案例相匹配的示例

您正在寻找的确实是一个案例

可以找到与您的案例相匹配的示例

结果:

PostID      InReplyTo   Depth       Sort
----------- ----------- ----------- --------------------------------------------
1           NULL        0           0000000001/
2           1           1           0000000001/0000000002/
4           2           2           0000000001/0000000002/0000000004/
6           4           3           0000000001/0000000002/0000000004/0000000006/
9           2           2           0000000001/0000000002/0000000009/
3           1           1           0000000001/0000000003/
5           3           2           0000000001/0000000003/0000000005/
8           5           3           0000000001/0000000003/0000000005/0000000008/
7           1           1           0000000001/0000000007/
结果:

PostID      InReplyTo   Depth       Sort
----------- ----------- ----------- --------------------------------------------
1           NULL        0           0000000001/
2           1           1           0000000001/0000000002/
4           2           2           0000000001/0000000002/0000000004/
6           4           3           0000000001/0000000002/0000000004/0000000006/
9           2           2           0000000001/0000000002/0000000009/
3           1           1           0000000001/0000000003/
5           3           2           0000000001/0000000003/0000000005/
8           5           3           0000000001/0000000003/0000000005/0000000008/
7           1           1           0000000001/0000000007/

不完全是我要找的-我可以得到我需要的数据,但我想像问题中那样对数据进行排序。因此,对于每一篇文章,它都会显示所有内容,然后再转到同一部门的下一篇文章。这不完全是我要找的-我可以得到我需要的数据,但我想按问题中的顺序排列数据。因此,对于每一篇文章,它将在相同深度的下一篇文章之前显示所有内容