在我的个人主页上,用户可以评论和回复评论(类似Facebook的1级评论)。由于一个主页可能会有成千上万条评论,因此我正在实现一些分页功能。尽管分页已经生效,但是由于存在子评论,简单的top n查询会破坏对话结构。因此,我只想对父评论进行分页,而不是对子评论进行分页。
表“comments”包含以下内容:
有没有一种有效的方法可以在一个查询中高效地将这两个内容组合起来?
表“comments”包含以下内容:
- commentID
- commentText
- parentCommentID
- commentOnUserID
这里的问题在于我只想对父级评论(parentCommentID = 0)进行分页。所以我编写了以下查询:
select * from Comments c
where c.parentCommentID = 0
and c.commentOnUserID = 65939
(因为它不相关,所以我省略了实际的分页查询)
但我也想加载所有这些评论的子评论,一个子评论也是一条评论,但其parentCommentID = 某个commentID:
select * from comments c
where c.parentCommentID in ( * get the commentId's from the previous query)
and c.commentOnUserID = 65939
有没有一种有效的方法可以在一个查询中高效地将这两个内容组合起来?