2011-06-07 31 views
5

Tôi muốn chọn tất cả các hình ảnh chỉ với một bình luận và tôi muốn bình luận rằng để trở thành một với ID tối đamysql LEFT tham gia cho bảng bên phải giá trị max

Tôi đã thử sau:

SELECT 
    p.id, 
    p.title, 
    MAX(c.id), 
    c.comment 
FROM tb_photos AS p 
    LEFT JOIN tb_comments AS c ON p.id=c.photos_id. 

Nó có vẻ là làm việc, nhưng tôi tự hỏi nếu có một cách tốt hơn để làm điều này?

Trả lời

5

bạn cần phải áp dụng tối đa (comment ID) trên mỗi bức ảnh (giả nhận xét ID là auto-increment và do đó luôn luôn là mới nhất bổ sung vào bảng)

select 
     p.*, 
     tbc.Comment 
    from 
     tb_photos p 
     LEFT JOIN (select c.photos_id, 
          max(c.id) lastCommentPerPhoto 
         from 
          tb_comments c 
         group by 
          c.photos_id 
         order by 
          c.Photos_id) LastPhotoComment 
      on p.id = LastPhotoComment.photos_id 
      LEFT JOIN tb_comments tbc 
       on LastPhotoComment.LastCommentPerPhoto = tbc.id 
-2

Bạn cũng có thể làm điều này với tham gia chéo:

select 
     p.*, 
     LastPhotoComment.Comment 
    from 
     tb_photos p 
     cross join (select top 1 c.Comment 
         from 
          tb_comments c 
         where 
          c.photos_id = p.id 
         order by 
          c.id DESC) LastPhotoComment 
+2

đầu không phải là chức năng của MySQL – acorncom

Các vấn đề liên quan