0

我有一个评论表,允许人们编辑他们的评论。我没有覆盖评论,而是创建了一个新评论并将其关联到它的“父级”。此外,我将子信息添加到父级。

id, user_id, comment_id__parent, comment_id__child, comment, created_dt

SQL小提琴在这里

现在我的问题是我想获取特定用户的所有评论,但只有评论的最新更新。

这让我头疼了一阵子,非常感谢您的意见!

4

4 回答 4

2

如果你的小提琴是正确的,你应该能够做到这一点:

SELECT * FROM comments 
 WHERE comment_id__child IS NULL AND user_id=1;

如果您comment_id__child在编辑时始终填充“父”注释,则此方法有效。

于 2014-05-14T13:14:59.227 回答
0

对于 uer_id =1

select * from comments where user_id=1 order by created_dt desc;
于 2014-05-14T13:14:47.850 回答
0

这完美!你可以在你的 sql fiddle 中看到结果。

select * from comments group by user_id having count(id) = 1
UNION
select * from comments where user_id in (select user_id from comments group by user_id having count(id) > 1) and comment_id__child is null and comment_id__parent is not null;
于 2014-05-14T13:24:31.233 回答
0

我想我找到了解决方案:

SELECT *
FROM comments
WHERE user_id = 1
  AND ( (comment_id__parent IS NULL
         AND comment_id__child IS NULL)
       OR (comment_id__parent IS NOT NULL
           AND comment_id__child IS NULL) )
ORDER BY created_dt DESC
于 2014-05-14T13:24:33.907 回答