Điều này sẽ nhận được các bài đăng của bạn với ba nhận xét gần đây nhất cho mỗi bài đăng, giả sử rằng các bảng của bạn trông giống như vậy:
bài đăng :
id
, post_text
nhận xét :
id
, post_id
, comment_text
SELECT id, post_text, comment_text
FROM
(
SELECT p.id, p.post_text, c.comment_text
CASE
WHEN @id != p.id THEN @row_num := 1
ELSE @row_num := @row_num + 1
END AS rank,
@id := p.id
FROM post p
LEFT JOIN comment c ON ( c.post_id = p.id )
JOIN ( SELECT @id:=NULL, @row_num:=0 ) x
ORDER BY p.id,
c.id DESC -- newest comments first
) y
WHERE rank <= 3;
Truy vấn phụ được sử dụng để lấy các nhận xét gần đây trước tiên và đánh số thứ tự chúng cho mỗi bài đăng, trong khi lựa chọn bên ngoài loại bỏ các nhận xét cũ hơn.