2011-06-07 120 views
5

我想選擇只有一個評論的每一張照片,我想這一評論是具有最大IDMySQL的左連接右表最大值

我曾嘗試以下操作:

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. 

它似乎在工作,但我想知道是否有更好的方法來做到這一點?

回答

5

你需要在每張照片應用MAX(註釋ID)(假設註釋ID是自動遞增,因此總是最新添加到表)

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

你也可以做到這一點與交叉連接:

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

top不是MySQL函數 – acorncom 2012-07-27 20:38:43