我有一个评论表,我试图完成能够选择根评论(`ParentCommentId = 0)然后从我回来的父评论中选择我所有的孩子和那些孩子的孩子等等
例如,我会取回CommentId = 1038
. 我也想要它的孩子 ( CommentId = 1039
) 因为ParentCommentId = 1038
, 然后还CommentId = 1040
因为它是ParentCommentId = 1039
等等。
我尝试了以下查询,因为我认为我的方向是正确的。
SELECT *
FROM
(SELECT
c.CommentId,
c.PostId,
c.Comment,
c.ParentCommentId,
c.CommentDateTime
FROM
[gallery].[Comments] c
INNER JOIN
[player].[Players] p ON p.UserId = c.UserId
WHERE
c.PostId = 32
AND ParentCommentId = 0) AS ParentComments
JOIN
(SELECT
c.CommentId,
c.PostId,
c.Comment,
c.ParentCommentId,
c.CommentDateTime
FROM
[gallery].[Comments] c
INNER JOIN
[player].[Players] p ON p.UserId = c.UserId
WHERE
c.PostId = 32
AND ParentCommentId != 0) AS ChildComments ON ParentComments.CommentId = ChildComments.ParentCommentId
但我肯定会得到错误的数据,比如与父母在同一行的孩子,理想情况下我希望孩子们成为单独的行。它也只有 1 个孩子的深度,而且肯定缺少很多评论(比下图的 5 个要多得多)。我似乎只得到一个根评论,它是第一个孩子,而不是任何没有孩子的孩子或根评论大孩子。