0

似乎无法为此找到一个好的答案。我目前有两张桌子,一张是 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
4

1 回答 1

0

我想通了,让它在 order 子句中使用 if 。唯一的缺点是父评论 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)
于 2013-04-23T15:37:13.663 回答