Mysql 检索评论并回复限制
我仍然没有找到正确的方法来做我想要的事情。我试图实现的是一个评论帖子部分,它将显示帖子的最后两个回复 我的桌子结构是这样的 table post --------------------- post_id | comment | post_user | post_date post_reply --------------------- reply_id | parent_id | reply_user | reply_date result ---------------------------------------------- post 1 reply post 1 reply post 1 post 2 post 3 reply post 3 reply post 3 桌柱 --------------------- 发布id |评论|发布用户|发布日期 回信 --------------------- 答复|家长|答复|用户|答复|日期 实际上,我可以获取所有帖子和所有回复,但我面临的问题是,我想限制我获取的帖子数量和每个帖子的回复数量,如果没有回复,我还想显示帖子,那么结果应该是这样的 table post --------------------- post_id | comment | post_user | post_date post_reply --------------------- reply_id | parent_id | reply_user | reply_date result ---------------------------------------------- post 1 reply post 1 reply post 1 post 2 post 3 reply post 3 reply post 3 结果 ---------------------------------------------- 职位1 回信1 回信1 职位2 职位3 回帖3 回帖3Mysql 检索评论并回复限制,mysql,post,join,comments,limit,Mysql,Post,Join,Comments,Limit,我仍然没有找到正确的方法来做我想要的事情。我试图实现的是一个评论帖子部分,它将显示帖子的最后两个回复 我的桌子结构是这样的 table post --------------------- post_id | comment | post_user | post_date post_reply --------------------- reply_id | parent_id | reply_user | reply_date result -------------------------
当然,我想显示这个,直到我达到10个帖子,2个回复最多附加到每个帖子,当然更少的查询可能。实际上,我对每篇文章都使用了一段时间的查询,即最后2条回复,但每次都使用11条查询,也许你们知道一种更好的方法,可以在更少的查询中进行查询。我假设您的ID列是INT类型。如果不是,您可能必须使用变量来计算每篇文章的回复,如上所述 所以试试这个
SELECT 'POST' AS type, p1.post_id, p1.comment, p1.post_user, p1.post_date, '-' AS reply_id
FROM post p1
LIMIT 10
UNION
SELECT 'REPLY' AS type, pr.parent_id AS post_id,
'-' AS comment, pr.reply_user AS post_user, pr.reply_date AS post_date, pr.reply_id
FROM post_reply pr
JOIN (
SELECT p2.post_id
FROM post p2
LIMIT 10
) AS tmpPost ON pr.parent_id = tmpPost.post_id
JOIN (
SELECT pr.reply_id, COUNT(*) AS row_number
FROM post_reply pr
JOIN post_reply pr2 ON pr.parent_id = pr2.parent_id AND pr.reply_id >= pr2.reply_id
GROUP BY pr.reply_id
) AS tmpPostRN ON tmpPostRN.reply_id = pr.reply_id
WHERE tmpPostRN.row_number <= 2
ORDER BY post_id ASC, type ASC, reply_id ASC
在第二个查询中,您可以在post_reply表中插入您的comment列,而不是将
“-”作为comment
。您还可以将帖子的回复id设置为您选择的默认值(而不是-1).非常感谢你回复这篇文章,我会在回家后马上测试。效果很好。我看到的唯一问题是返回我2个回复什么很好,但返回2个第一个回复可以是来自post\u reply的最后2个回复吗?只需将子查询中的pr.reply\u id>=pr2.reply\u id
替换为pr.reply\u id