Das edições e feedback dos comentários, aqui está a consulta que acho que você está procurando... A pré-consulta mais interna obtém as postagens e quem iniciou a postagem, comentários e quem postou os comentários. Essa consulta interna também é pré-classificada com os COMENTÁRIOS MAIS RECENTES no topo por postID. Usando o resultado disso, estou me juntando às variáveis sql (@variables) para obter o @varRow aumentado toda vez que um novo comentário e redefinir para 1 toda vez que um ID de postagem for alterado (daí o PreQuery interno ordena por ID de postagem PRIMEIRO ). Por fim, usar a cláusula HAVING para ter a contagem @varRow do comentário <6 obterá no máximo 5 de cada postagem.
Se você quiser limitar quais postagens você está tentando recuperar, eu aplicaria uma cláusula WHERE (como data/hora, se disponível) no INNER mais que gera a "Pré-Consulta".
select straight_join
PreQuery.*,
@varRow := if( @LastPost = PreQuery.PostID, @varRow +1, 1 ) CommentRow,
@LastPost := PreQuery.PostID PostID2
from
( select
posts.id PostID,
posts.body,
posts.CreatedAt,
u1.id UserID,
u1.DisplayName NameOfPoster,
c.id,
c.userid CommentUserID,
c.text CommentText,
u2.DisplayName CommentUserName
from
posts
join users u1
on posts.ownerUserID = u1.id
LEFT JOIN comments c
on posts.id = c.PostID
join users u2
on c.userid = u2.id
where
posts.id = TheOneParentIDYouWant
OR posts.parentid = TheOneParentIDYouWant
order by
posts.ID,
c.id desc ) PreQuery,
(select @varRow := 0, @LastPost = 0 ) SQLVars
having
CommentRow < 6
order by
PreQuery.postid,
CommentRow
--- EDIT --- por comentárioAcho que o que você quer dizer com "Publicação Pai" a que os comentários estão associados é porque eles têm o ID da postagem diretamente. Como a consulta mais interna faz uma junção de todos os elementos/tabelas em todo o quadro, todos estão vindo para o passeio ...
Post -> User (to get posting user name )
Post -> Comment (on Common Post ID -- left joined)
Comment -> User ( to get commenting user name)
Uma vez que tudo é feito e classificado por Post ID comum e o comentário mais recente classificado para o topo, aplico o @vars em TODAS as linhas retornadas. A cláusula HAVING removerá qualquer comentário em que sua sequência esteja ALÉM do 5 que você estava procurando.