2011-06-07 16 views
5

के लिए शामिल हो मैं केवल एक टिप्पणी के साथ हर तस्वीर का चयन करना चाहते हैं और मुझे लगता है कि टिप्पणीmysql वाम सही तालिका अधिकतम मूल्य

मैं निम्नलिखित की कोशिश की है अधिकतम आईडी के साथ एक होना चाहते हैं:

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

आप (यह मानते हुए टिप्पणी आईडी ऑटो वेतन वृद्धि सबसे हाल ही में तालिका में जोड़ा गया है और इस तरह हमेशा) प्रत्येक तस्वीर पर अधिकतम (टिप्पणी 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

शीर्ष एक MySQL फ़ंक्शन नहीं है – acorncom

संबंधित मुद्दे