2011-06-07 173 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