我有一个评论表,允许人们编辑他们的评论。我没有覆盖评论,而是创建了一个新评论并将其关联到它的“父级”。此外,我将子信息添加到父级。
id, user_id, comment_id__parent, comment_id__child, comment, created_dt
现在我的问题是我想获取特定用户的所有评论,但只有评论的最新更新。
这让我头疼了一阵子,非常感谢您的意见!
我有一个评论表,允许人们编辑他们的评论。我没有覆盖评论,而是创建了一个新评论并将其关联到它的“父级”。此外,我将子信息添加到父级。
id, user_id, comment_id__parent, comment_id__child, comment, created_dt
现在我的问题是我想获取特定用户的所有评论,但只有评论的最新更新。
这让我头疼了一阵子,非常感谢您的意见!
如果你的小提琴是正确的,你应该能够做到这一点:
SELECT * FROM comments
WHERE comment_id__child IS NULL AND user_id=1;
如果您comment_id__child
在编辑时始终填充“父”注释,则此方法有效。
对于 uer_id =1
select * from comments where user_id=1 order by created_dt desc;
这完美!你可以在你的 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;
我想我找到了解决方案:
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