似乎找不到一个好的答案。我目前有两张桌子,一张是Facebook帖子,另一张是评论。除此之外,我现在还需要添加回复,因为 FB 最近这样做了。
我当前的查询从帖子中选择并加入评论。我希望对回复做的是在评论中添加另一个条目,但带有父ID。无论我最终遇到什么查询,我都希望结果如下所示:
postID commentID parentID
1
2 1
2 2 1
2 3 1
3 4
因此,帖子 1 没有评论,帖子 2 有一条评论,其中包含对该评论的两次回复,而帖子 3 只有一条评论。在我的注释表中,注释 1-4 都是同一表中的单独条目。无论如何,是否可以使用一个查询来执行此操作,而不必将另一个联接到注释表?
编辑,当前查询。这个查询不处理回复,它只针对帖子和一级评论。
select facebookFeeds.*, facebookComments.userID, facebookComments.name, facebookComments.message as cMessage, facebookComments.createdTime as cCreatedTime from facebookFeeds left join facebookComments on facebookFeeds.id = facebookComments.feedID where facebookComments.accountID= 24 order by createdTime desc
我想通了,用if in the order子句让它生效。唯一的缺点是父注释ID的数字必须低于其回复。否则,回复将显示在父注释之前。当收到数据时,回复会在评论之后,所以应该没问题。
select facebookFeeds.*, facebookComments.id as cID, parentID, facebookComments.userID, facebookComments.name, facebookComments.message as cMessage, facebookComments.createdTime as cCreatedTime from facebookFeeds left join facebookComments on facebookFeeds.id = facebookComments.feedID where facebookComments.accountID = 24 order by facebookFeeds.createdTime desc, if(parentID is null, cID, parentID)