我一直在尝试这个要求几个小时,但我一无所知,因为我没有得到理想的结果。
我有两张桌子。
**Main Comment Table
----------------------------------------------------------------------------
id | comments | date_commented | comment_owner | commented_by
1 hello world ********** 321 123
Child Comment Table
----------------------------------------------------------------------------
id | mainpostID| child_comment_data | commented_by | date_commented**
1 1 child comment of hello world 456 ********
我的要求:
我想为每个主要评论检索前10个主要评论以及Chilcomments。我想将每条主要评论的儿童评论数限制为5条。
我尝试了什么:
SELECT maincomment.comments, childcomment.child_comment_data
FROM maincomment
LEFT JOIN childcomment ON maincomment.id = childcomment.mainpostID
AND maincomment.comment_owner = childcomment.commented_by
WHERE maincomment.id = childcomment.mainpostID
ORDER BY dateposted DESC
LIMIT 10
结果:我只获得了10条主要评论,但每条主评论的儿童评论数量仅为1。我需要的是为每个主要评论返回5个子评论。
有人请在这里提出一些建议/疑问。
非常感谢。
答案 0 :(得分:1)
您可以使用此解决方案:
SELECT a.*, b.*
FROM
(
SELECT *
FROM maincomment
ORDER BY dateposted DESC
LIMIT 10
) a
LEFT JOIN
(
SELECT a.*
FROM childcomment a
INNER JOIN childcomment b ON a.mainpostID = b.mainpostID AND a.id <= b.id
GROUP BY a.id
HAVING COUNT(1) <= 5
) b ON a.id = b.mainpostID
ORDER BY a.dateposted DESC, b.date_commented DESC
这可以获得10个最新主要评论的5个最新儿童评论。如果特定主评论没有子评论,则子评论数据将包含NULL
值。