Thử cái này. Bạn có thể thay thế range_ bằng cách sử dụng một số biến được giữ trên giao diện người dùng của bạn để phân trang.
select child.MessageText from
(select @i:[email protected]+1 as range_, id, MessageText from messages, (select @i:=0) k where ParentMessageId is null order by id asc) parent
left outer join messages child on (parent.id = child.ParentMessageId or parent.id = child.id)
where parent.range_ between 1 and 3;