Sql server 2008 查询线程化讨论
我有一个单独的表,其中包含REPLYTO中的自参考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
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/
不完全是我要找的-我可以得到我需要的数据,但我想像问题中那样对数据进行排序。因此,对于每一篇文章,它都会显示所有内容,然后再转到同一部门的下一篇文章。这不完全是我要找的-我可以得到我需要的数据,但我想按问题中的顺序排列数据。因此,对于每一篇文章,它将在相同深度的下一篇文章之前显示所有内容